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

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.
September 08, 2026, 11:25:34 am

Login with username, password and session length

Αναζήτηση

Google

THMMY.gr Web
Πρόσφατα
Νέος Επίκουρος Καθηγητής:...
by Μπιγκόνια
[Today at 05:27:58]

Των συνειρμών το παίγνιο....
by Μπιγκόνια
[Today at 05:26:14]

[Τομέας Ενέργειας] Μαθήμα...
by DimStyl
[Today at 02:29:51]

Πρόγραμμα Σπουδών Ακαδημα...
by DimStyl
[Today at 00:01:39]

Αποτελέσματα Εξεταστικής ...
by georkala
[September 07, 2026, 17:15:17 pm]

[Μικροεπεξεργαστές] Γενικ...
by G.V.
[September 07, 2026, 10:55:23 am]

[Διανεμημένη Παραγωγή] Γε...
by Nikos_313
[September 06, 2026, 21:29:45 pm]

[ΥΜΕΣ] Να επιλέξω το μάθη...
by Nikos_313
[September 06, 2026, 21:28:41 pm]

[ΟΔΕ] Γενικές απορίες,ασκ...
by Nikos_313
[September 04, 2026, 19:26:41 pm]

Συγγράματα μαθημάτων που ...
by G.V.
[September 04, 2026, 12:33:39 pm]

[Ηλ. Μηχανές ΙΙ] Να επιλέ...
by Nikos_313
[September 03, 2026, 23:07:16 pm]

[ΑΝΤΙΣΤΑΣΗ] Συλλογή Υπογρ...
by G.V.
[September 03, 2026, 21:34:12 pm]

[ΑΝΤΙΣΤΑΣΗ] ΚΑΜΙΑ ΣΚΕΨΗ Γ...
by Χαρούμενη Πατάτα
[September 03, 2026, 17:21:57 pm]

Ιδιαιτερα ΣΑΕ1, ΣΑΕ2, Φυσ...
by statsimp
[September 02, 2026, 14:09:21 pm]

[Οργάνωση και Διοικηση Ερ...
by Nikos_313
[September 02, 2026, 13:51:52 pm]

Αρχείο Ανακοινώσεων [Arch...
by Nikos_313
[September 02, 2026, 12:42:28 pm]

[ΣΑΕ Ι] Γενικές απορίες κ...
by supersonic pepega
[September 01, 2026, 12:43:58 pm]

[Δίκτυα Τηλεπικοινωνιών] ...
by alababamas4444
[September 01, 2026, 12:18:27 pm]

Νέος Επίκουρος Καθηγητής:...
by RivenT
[August 31, 2026, 21:13:29 pm]

Νέος Επίκουρος Καθηγητής:...
by Nikos_313
[August 31, 2026, 16:02:50 pm]
Στατιστικά
Members
Total Members: 10434
Latest: Spencer112
Stats
Total Posts: 1431970
Total Topics: 32039
Online Today: 940
Online Ever: 18918
(April 06, 2026, 16:05:31 pm)
Users Online
Users: 27
Guests: 623
Total: 650
grepanis
nikolihss
swkraths
ansia
armadilo10
asantor
DimitrisKost
vasillikiiiiii
Pakapis5
Tasos Bot
dimopoul
Θιασώτης
chriskazakos
stavros0201
mimaki
ioannisfa
_Trob
PAPARI69
Billyskotsikas
jim_sklab
Petross
Angelos Asim
ඞ
dimitavram
Εμφάνιση

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

Νέα!
Πρόγραμμα Επαναληπτικής Εξεταστικής 2025-2026
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 3398 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...