• Downloads
  • ! Read Me !
  • Μαθήματα
  • Φοιτητικά
  • Τεχνικά Θέματα
  • Συζητήσεις
  • Happy Hour!
  • About THMMY.gr
 V  < 
Search:  
Welcome, Guest. Please login or register.
June 17, 2025, 17:25:24 pm

Login with username, password and session length
Links
  Thmmy.gr portal
   Forum
   Downloads
   Ενεργ. Λογαριασμού
   Επικοινωνία
  
  Χρήσιμα links
   Σελίδα τμήματος
   Βιβλιοθήκη Τμήματος
   Elearning
   Φοιτητικά fora
   Πρόγραμμα Λέσχης
   Πρακτική Άσκηση
   Ηλεκτρονική Εξυπηρέτηση Φοιτητών
   Διανομή Συγγραμμάτων
   Ψηφιακό Καταθετήριο Διπλωματικών
   Πληροφορίες Καθηγητών
   Instagram @thmmy.gr
   mTHMMY
  
  Φοιτητικές Ομάδες
   ACM
   Aristurtle
   ART
   ASAT
   BEAM
   BEST Thessaloniki
   EESTEC LC Thessaloniki
   EΜΒ Auth
   IAESTE Thessaloniki
   IEEE φοιτητικό παράρτημα ΑΠΘ
   SpaceDot
   VROOM
   Panther
  
Πίνακας Ελέγχου
Welcome, Guest. Please login or register.
June 17, 2025, 17:25:24 pm

Login with username, password and session length

Αναζήτηση

Google

THMMY.gr Web
Πρόσφατα
Πρακτική Άσκηση ΤΗΜΜΥ 201...
by asemas
[Today at 16:20:27]

Τι ακούτε αυτήν τη στιγμή...
by Katarameno
[Today at 14:25:00]

Αντικατάστασης πυκνωτή σε...
by george14
[Today at 13:58:20]

Πότε θα βγει το μάθημα; -...
by tzortzis
[Today at 13:19:53]

Αποτελέσματα Εξεταστικής ...
by george14
[Today at 12:08:25]

[ΨEE] Γενικές απορίες και...
by Juror8
[Today at 12:06:57]

Ισραήλ - Ιράν: Πόλεμος στ...
by okan
[Today at 02:33:21]

[Οργάνωση Υπολογιστών] Γε...
by RAFI
[June 16, 2025, 22:46:54 pm]

[Σ.Π.Η.Ε.] Γενικές απορίε...
by Nikos_313
[June 16, 2025, 19:49:00 pm]

[ΘΤΠΑ] Γενικές απορίες κα...
by Nikos_313
[June 16, 2025, 16:56:56 pm]

[Εφ.Θερμοδυναμική] Γενικέ...
by Λαμπτήρας
[June 16, 2025, 15:55:08 pm]

[Αρχές Οικονομίας] Να επι...
by _Trob
[June 16, 2025, 13:28:21 pm]

[Σ.Α.Π.Γ.] Εργασία 2025
by Nikos_313
[June 16, 2025, 12:13:45 pm]

[Διανεμημένη Παραγωγή] Γε...
by Διάλεξις
[June 16, 2025, 01:56:37 am]

[Σ.Π.Η.Ε.] Παλιά θέματα -...
by nmpampal
[June 15, 2025, 06:43:15 am]

Το thmmy.gr στο instagram...
by Mr Watson
[June 15, 2025, 00:50:23 am]

[Λογισμός ΙΙ] Απορίες σε...
by el mariachi
[June 14, 2025, 20:47:07 pm]

ΠΡΟΣΟΧΗ στο ανέβασμα θεμά...
by tzortzis
[June 14, 2025, 16:54:08 pm]

Ρυθμίσεις Θεμάτων της Ανώ...
by el mariachi
[June 14, 2025, 11:56:45 am]

Αρχείο Ανακοινώσεων [Arch...
by Nikos_313
[June 14, 2025, 09:58:14 am]
Στατιστικά
Members
Total Members: 9961
Latest: Poli
Stats
Total Posts: 1426690
Total Topics: 31710
Online Today: 218
Online Ever: 2093
(April 17, 2025, 08:47:49 am)
Users Online
Users: 84
Guests: 134
Total: 218
geojohn
kchatziae
vasilis saitis
Belafonte
Captain
mmikelo
Vaantoniadis
Konstantinoy
examino
sterlouk
Annapar
vaiatyr
G.V.
dkoukn
fungi
Ioannakoliou
iJasonOP
vasillikiiiiii
Gianbou
thaliatsk
kostas1507
ioathemar
ANDVRONTZOS
Pcsc
jimalexoud
geftihiakos
maestros
mkakale
karadimitras
lemonjuicy
Gray139
mgrivab
george14
gp6
noimaginationforthis
mpournaz
rafa98p
jojos
kostaspap
Yamal
Zoifouka
Thalasotsanta
Nekt
dimitrisadamou
anon
Vangelan
apob
MomostheGreen
stnanou
aachmet
hacky
Saint_GR
Roidos
anastas1a
asemas
angelos
savvastzan
giorgosss03
Evripidis
evangeliaap
Η ΤΡΑΠΟΥΛΑ ΤΟΥ ΠΑΠΠΟΥ ΜΟΥ
tmpadasn
myrto
gsifnio
victoria
athenamits
Τρου Ντετεκτιβ
chaniotism
EvP
Toaoutplasedakitoubiseswa
gpapailio
Bill g
thathas12
Giannis Masterio
lefterish
georkala
nikolith
Εμφάνιση

Νέα για πρωτοετείς
Είσαι πρωτοετής;... Καλώς ήρθες! Μπορείς να βρεις πληροφορίες εδώ. Βοήθεια για τους καινούργιους μέσω χάρτη.
Κατεβάστε εδώ το Android Application για εύκολη πρόσβαση στο forum.
Ανεβάζετε τα θέματα των εξετάσεων στον τομέα Downloads με προσοχή στα ονόματα των αρχείων!

Νέα!
Για ανανέωση (ή προσθήκη νέου) avatar, πρέπει η μεγαλύτερη διάσταση της εικόνας να είναι 110 pixels.
THMMY.gr > Forum > Ηλεκτρονικοί Υπολογιστές και Τεχνικά Θέματα > Περί Υπολογιστών... > Software > Προγραμματισμός (C, VB, Delphi, PHP, ASP...) > C / C++ / C# (Moderators: chatzikys, PolarBear) > πρόβλημα με δυναμική δέσμευση μνήμης για τριδιάστατο πίνακα
0 Members and 1 Guest are viewing this topic.
Pages: [1] Go Down Print
Author Topic: πρόβλημα με δυναμική δέσμευση μνήμης για τριδιάστατο πίνακα  (Read 2570 times)
bouzias
Καταξιωμένος/Καταξιωμένη
***
Gender: Male
Posts: 208



View Profile
πρόβλημα με δυναμική δέσμευση μνήμης για τριδιάστατο πίνακα
« on: March 10, 2006, 12:53:39 pm »

Θέλω να δεσμεύσω δυναμικά μνήμη και να δημιουργήσω ένα 3d array. Δοκίμασα τον παρακάτω κώδικα αλλά μου βγάζει (γεμίζει την οθόνη με μηνύματα) "not enough memory to allocate".

#include "stdafx.h"
#include <iostream>
#include "stdlib.h"
using namespace std;

void main()
{
   int a,i=0,j=0,k=0;
   double*** E;

   a=100;
   if((E=(double***)malloc((a)*sizeof(double)))==NULL){
      printf("not enough memory to allocate");
   }
   for (i=0;i<a;i++){
      if(E[ i] =(double**)malloc((a)*sizeof(double))){
         printf("not enough memory to allocate");
      }
   }
   for (i=0;i<a;i++){
      for (j=0;j<a;j++){
         if(E[ i][j]=(double*)malloc((a)*sizeof(double))){
            printf("not enough memory to allocate");
         }
      }
   }
   for (i=0;i<a;i++){
      for (j=0;j<a;j++){
         for (k=0;k<a;k++){
            E[ i][j][k]=0;
         }
      }
   }

   free(E);
   for (i=0;i<a;i++){
      free(E[ i]);
   }
   for (i=0;i<a;i++){
      for (j=0;j<a;j++){
         free(E[ i][j]);
      }
   }
   
}

Γενικά θέλω να δίνω στην αρχή τιμή σ' έναν int a και να δημιουργεί ένα array μεγέθους axaxa
Καμιά ιδέα;
Logged

«Αν οι ζητιάνοι σαν κι εμέ δεν έχυναν το αίμα,
Οι καπετάνιοι σαν και σε δε θα φορούσαν στέμμα!»

"Ματρόζος" του Γεωργίου Στρατήγη
BOBoMASTORAS
Veteran
Καταστραμμένος
******
Posts: 6082


It just doesn't get any easier! It gets worse...


View Profile
Απ: πρόβλημα με δυναμική δέσμευση μνήμης για τριδιάστατο πίνακα
« Reply #1 on: March 10, 2006, 13:01:50 pm »

#include "stdafx.h"
#include <iostream>
#include "stdlib.h"
using namespace std;

void main()
{
   int a,i=0,j=0,k=0;
   double*** E;

   a=100;
   if((E=(double***)malloc((a)*sizeof(double**)))==NULL){
      printf("not enough memory to allocate");
   }
   for (i=0;i<a;i++){
      if(E[ i] =(double**)malloc((a)*sizeof(double*))){
         printf("not enough memory to allocate");
      }
   }
   for (i=0;i<a;i++){
      for (j=0;j<a;j++){
         if(E[ i][j]=(double*)malloc((a)*sizeof(double))){
            printf("not enough memory to allocate");
         }
      }
   }
   for (i=0;i<a;i++){
      for (j=0;j<a;j++){
         for (k=0;k<a;k++){
            E[ i][j][k]=0;
         }
      }
   }

   for (i=0;i<a;i++){
      for (j=0;j<a;j++){
         free(E[ i][j]);
      }
   }
   for (i=0;i<a;i++){
      free(E[ i]);
   }
   free(E);   

}


« Last Edit: March 10, 2006, 13:05:05 pm by BOBoMASTORAS » Logged

Της γενιάς μου βασιλιά,
μην κατέβεις τα σκαλιά.
Πιες αθάνατο νερό
να νικήσεις τον καιρό.

http://tools.ietf.org/html/rfc1149
The only reason we invent robots
bouzias
Καταξιωμένος/Καταξιωμένη
***
Gender: Male
Posts: 208



View Profile
Απ: πρόβλημα με δυναμική δέσμευση μνήμης για τριδιάστατο πίνακα
« Reply #2 on: March 10, 2006, 22:59:30 pm »

Σωστές οι παρατηρήσεις σου αλλά πάλι γέμισε η οθόνη με μηνύματα "not enough memory to allocate" (δηλαδή δε βρίσκει χώρο στη heap) και μετά από λίγο έβγαλε και το εξής: "Unhandled exception at 0x77f7f570 in two_d_PML_1st.exe: User breakpoint."
Logged

«Αν οι ζητιάνοι σαν κι εμέ δεν έχυναν το αίμα,
Οι καπετάνιοι σαν και σε δε θα φορούσαν στέμμα!»

"Ματρόζος" του Γεωργίου Στρατήγη
JAs0n-X
Αbsolute ΤΗΜΜΥ.gr
*******
Gender: Male
Posts: 2861


Rhodes [Sattelite image]


View Profile
Απ: πρόβλημα με δυναμική δέσμευση μνήμης για τριδιάστατο πίνακα
« Reply #3 on: March 11, 2006, 00:01:33 am »

Αυτο που σου ειπε ο ΒοΒ ειναι σωστο... βασικα πηγαινα να στο γραψω και εγω (πιο συνοπτικα) αλλα με προλαβε!
Δοκιμασες αλλο compiler? δοκιμασες να του δωσεις μικροτερο α? πχ 3.
με α=100 συγκεκριμενα θες περιπου 10^6*8 bytes δηλαδη 8ΜByte! (αν οι double ειναι 8 bytes και δεν κανω λαθος).
Logged

J=X
--------------------------------------------
Ο Χριστος πεθανε
Ο Μαρξ πεθανε...
και εγω τελευταια δεν αισθανομαι καλα !
BOBoMASTORAS
Veteran
Καταστραμμένος
******
Posts: 6082


It just doesn't get any easier! It gets worse...


View Profile
Απ: πρόβλημα με δυναμική δέσμευση μνήμης για τριδιάστατο πίνακα
« Reply #4 on: March 11, 2006, 04:43:26 am »

Σε παλιό compiler έχεις 512Κb Συνολικά για κώδικα και 512Kb για μνήμη(ανάλογα και με το μοντέλο μνήμης που χρησιμοποιείς). Οπότε αποκλείεται να μπορέσεις να δευσμεύσεις τόση μνήμη. Τώρα σε κάποιον compiler όπως visual studio μπορεί να δευσμέυσεις τόσο χώρο (δε το έχω δοκιμάσει) αλλά είναι πάλι υπερβολή.
Logged

Της γενιάς μου βασιλιά,
μην κατέβεις τα σκαλιά.
Πιες αθάνατο νερό
να νικήσεις τον καιρό.

http://tools.ietf.org/html/rfc1149
The only reason we invent robots
bouzias
Καταξιωμένος/Καταξιωμένη
***
Gender: Male
Posts: 208



View Profile
Απ: πρόβλημα με δυναμική δέσμευση μνήμης για τριδιάστατο πίνακα
« Reply #5 on: March 11, 2006, 11:06:20 am »

Χρησιμοποιώ Visual Studio .Net 2003. Έβαλα α=6 αλλά πάλι έβγαλε τα ίδια ακριβώς λάθη. Απ' ότι διάβασα με τη malloc() δεσμεύεις μνήμη από τη heap (όλη την εικονική μνήμη: όση ram έχει μείνει αχρησιμοποίητη + σκληρός δίσκος). Επομένως ακόμη και 8 MB να δεσμεύσει είναι σχετικά λίγα. Το θέμα είναι όμως ότι βγάζει το ίδιο πρόβλημα ακόμη και για α=6.

Μήπως υπάρχει και κάποιος άλλος τρόπος να γίνει αυτό που χρειάζομαι;

(Το α πρέπει να παίρνει τιμές από 50 μέχρι 200 μπορεί και πιο πολύ)
Logged

«Αν οι ζητιάνοι σαν κι εμέ δεν έχυναν το αίμα,
Οι καπετάνιοι σαν και σε δε θα φορούσαν στέμμα!»

"Ματρόζος" του Γεωργίου Στρατήγη
gpavlidi
Νεούλης/Νεούλα
*
Posts: 28

I dont have parents.. Somebody used fork();


View Profile WWW
Re: πρόβλημα με δυναμική δέσμευση μνήμης για τριδιάστατο πίνακα
« Reply #6 on: March 11, 2006, 12:54:30 pm »

#include "stdafx.h"
#include <iostream>
#include "stdlib.h"
using namespace std;

void main()
{
   int a,i=0,j=0,k=0;
   double*** E;

   a=100;
   if((E=(double***)malloc((a)*sizeof(double*)))==NULL){
      printf("not enough memory to allocate");
   }
   for (i=0;i<a;i++){
      if((E[ i] =(double**)malloc((a)*sizeof(double*)))==NULL){
         printf("not enough memory to allocate");
      }
   }
   for (i=0;i<a;i++){
      for (j=0;j<a;j++){
         if((E[ i][j]=(double*)malloc((a)*sizeof(double)))==NULL){
            printf("not enough memory to allocate");
         }
      }
   }
   for (i=0;i<a;i++){
      for (j=0;j<a;j++){
         for (k=0;k<a;k++){
            E[ i][j][k]=0;
         }
      }
   }

   for (i=0;i<a;i++){
      for (j=0;j<a;j++){
         free(E[ i][j]);
      }
   }

   for (i=0;i<a;i++){
      free(E[ i]);
   }

   free(E);
}


Apla eixes ksexasei na balleis ta '==null' kai sta alla 2 if.
Episis otan kaneis free, ksekinas apo tous pointers tou xamiloterou epipedou (px E(i)(j)) kai meta proxwras sta E(i) kai E...
Afto giati an soutareis to E prwta, kai meta tou les na soutarei to E(i), den tha to vrei kai tha vgalei exception...

Hope that helps!

//Sorry gia ta greeklish
Yanis
« Last Edit: March 11, 2006, 12:57:10 pm by gpavlidi » Logged
bouzias
Καταξιωμένος/Καταξιωμένη
***
Gender: Male
Posts: 208



View Profile
Απ: πρόβλημα με δυναμική δέσμευση μνήμης για τριδιάστατο πίνακα
« Reply #7 on: March 11, 2006, 14:31:45 pm »

Όντως τα είχα ξεχάσει αυτά... bang_head
Πάλι όμως μου βγάζει Unhandled exception at 0x77f7f570 in two_d_PML_1st.exe: User breakpoint.
Δοκίμασα με try catch αλλά πάλι το ίδιο. Ουφ...
Logged

«Αν οι ζητιάνοι σαν κι εμέ δεν έχυναν το αίμα,
Οι καπετάνιοι σαν και σε δε θα φορούσαν στέμμα!»

"Ματρόζος" του Γεωργίου Στρατήγη
JAs0n-X
Αbsolute ΤΗΜΜΥ.gr
*******
Gender: Male
Posts: 2861


Rhodes [Sattelite image]


View Profile
Απ: πρόβλημα με δυναμική δέσμευση μνήμης για τριδιάστατο πίνακα
« Reply #8 on: March 11, 2006, 21:01:22 pm »

την ετρεξα και γω και μου βγαζει το ιδιο προβλημα! αρα το προβλημα ειναι στον κωδικα...ΠΟΥ ΟΜΩΣ?? Tongue
Logged

J=X
--------------------------------------------
Ο Χριστος πεθανε
Ο Μαρξ πεθανε...
και εγω τελευταια δεν αισθανομαι καλα !
BOBoMASTORAS
Veteran
Καταστραμμένος
******
Posts: 6082


It just doesn't get any easier! It gets worse...


View Profile
Απ: πρόβλημα με δυναμική δέσμευση μνήμης για τριδιάστατο πίνακα
« Reply #9 on: March 12, 2006, 02:38:38 am »

θα προσπαθήσω να το κοιτάξω αύριο...
(ή μάλλον σήμερα !!!! Tongue )
Logged

Της γενιάς μου βασιλιά,
μην κατέβεις τα σκαλιά.
Πιες αθάνατο νερό
να νικήσεις τον καιρό.

http://tools.ietf.org/html/rfc1149
The only reason we invent robots
gpavlidi
Νεούλης/Νεούλα
*
Posts: 28

I dont have parents.. Somebody used fork();


View Profile WWW
Re: πρόβλημα με δυναμική δέσμευση μνήμης για τριδιάστατο πίνακα
« Reply #10 on: March 12, 2006, 04:32:52 am »

Για καντε ενα copy paste τον κωδικα που έγραψα με Italic στο προηγούμενο μου post...
Μου τρέχει κανονικά με .νετ
Logged
BOBoMASTORAS
Veteran
Καταστραμμένος
******
Posts: 6082


It just doesn't get any easier! It gets worse...


View Profile
Απ: πρόβλημα με δυναμική δέσμευση μνήμης για τριδιάστατο πίνακα
« Reply #11 on: March 12, 2006, 05:00:10 am »

τετοια ώρα τέτοια λόγια. πρεπει να το εγκαταστήσω.... από αύριο....
Logged

Της γενιάς μου βασιλιά,
μην κατέβεις τα σκαλιά.
Πιες αθάνατο νερό
να νικήσεις τον καιρό.

http://tools.ietf.org/html/rfc1149
The only reason we invent robots
poly1
Guest
Re: πρόβλημα με δυναμική δέσμευση μνήμης για τριδιάστατο πίνακα
« Reply #12 on: March 12, 2006, 12:24:05 pm »

και γω το δοκίμασα και τρέχει μιά χαρά
Logged
bouzias
Καταξιωμένος/Καταξιωμένη
***
Gender: Male
Posts: 208



View Profile
Απ: πρόβλημα με δυναμική δέσμευση μνήμης για τριδιάστατο πίνακα
« Reply #13 on: March 12, 2006, 16:07:43 pm »

Ε-Π-Ι-Τ-Ε-Λ-Ο-Υ-Σ το βρήκα. Ήταν πολύ χαζό. Εγώ έκανα copy paste κώδικα ο οποίος κάνει malloc(a). Στο pc μου όμως στο a έχω δώσει άλλο όνομα. Έτσι από μπέρδεμα στο pc μου έκανα malloc(a-1) !!!!!!!!!!!!!!!!!!!!!!!!!!!! Οπότε προέκυψαν όλα αυτά...
Επίσης στο πρώτο if είχα sizeof(double**) και όχι sizeof(double*) όπως έγραψε ο gpavlidi, αν και νομίζω ότι αυτό δε δημιουργεί κάποιο λάθος.
ΕΥΧΑΡΙΣΤΩ ΠΟΛΥ ΟΛΟΥΣ
Logged

«Αν οι ζητιάνοι σαν κι εμέ δεν έχυναν το αίμα,
Οι καπετάνιοι σαν και σε δε θα φορούσαν στέμμα!»

"Ματρόζος" του Γεωργίου Στρατήγη
BOBoMASTORAS
Veteran
Καταστραμμένος
******
Posts: 6082


It just doesn't get any easier! It gets worse...


View Profile
Απ: πρόβλημα με δυναμική δέσμευση μνήμης για τριδιάστατο πίνακα
« Reply #14 on: March 14, 2006, 02:33:31 am »

ναι το sizeof(double *) με το sizeof(double **) δεν έχει διαφορά γιατί όλοι οι ποιντερσ έχουν το ίδιο μέγεθος
Logged

Της γενιάς μου βασιλιά,
μην κατέβεις τα σκαλιά.
Πιες αθάνατο νερό
να νικήσεις τον καιρό.

http://tools.ietf.org/html/rfc1149
The only reason we invent robots
Pages: [1] Go Up Print
Jump to:  

Powered by SMF | SMF © 2006-2009, Simple Machines LLC
Scribbles2 | TinyPortal © Bloc | XHTML | CSS
Loading...