19. 01. 2009. | #1 |
član
Na probnom radu
Datum učlanjenja: 17.11.2007
Poruke: 36
Hvala: 4
0 "Hvala" u 0 poruka
|
C - Alokacija memorije
Pozdrav svima!
Imam problem sa alokacijom memorije unutar strukture: typedef struct { char *usrname; int int_usr_id; } user_data; ... user_data *user_data_arr; user_data_arr = (user_data*)malloc(sizeof(user_data) * 10); ... Uzimamo podatke iz baze, 10 redova ... user_data_arr[i].usrname = (char *)malloc(sizeof(mysql_row[0])); if (user_data_arr[i].usrname != NULL) { sprintf(user_data_arr[i].usrname,"%s",mysql_row[0]); } ... Kada izvrsim ovaj kod dobijem: *** glibc detected *** malloc(): memory corruption: 0x0806c250 *** Ako koristim staticki niz, npr. usrname[50] onda sve radi ok. |
19. 01. 2009. | #2 |
Super Moderator
Knowledge base
Datum učlanjenja: 02.10.2006
Lokacija: Niš
Poruke: 1.618
Hvala: 263
275 "Hvala" u 104 poruka
|
mislim da sizeof(mysql_row[0]) ne vraca duzinu podatka koji mysql daje...
tu se mozda zeznes. |
"Hvala" Peca za poruku: |
19. 01. 2009. | #3 |
član
Na probnom radu
Datum učlanjenja: 17.11.2007
Poruke: 36
Hvala: 4
0 "Hvala" u 0 poruka
|
Jeste, u pravu si!
(char *) malloc(sizeof(char *)*strlen(mysql_row[0])); Sada radi... Hvala! |
19. 01. 2009. | #4 |
Super Moderator
Knowledge base
Datum učlanjenja: 02.10.2006
Lokacija: Niš
Poruke: 1.618
Hvala: 263
275 "Hvala" u 104 poruka
|
znaci nisam zardjao, iako nisam programirao u C/C++ vec punih 5-6 god...
sta ucini web development od mene... btw, zasto opet sizeof koristis? zar ne treba: (char *) malloc(strlen(mysql_row[0])); Poslednja izmena od Peca : 19. 01. 2009. u 13:04. |
19. 01. 2009. | #5 |
xyz
Grand Master
Datum učlanjenja: 25.10.2006
Poruke: 893
Hvala: 87
346 "Hvala" u 163 poruka
|
malloc ( strlen (s) + 1 ) !
Kakav flashback u nocne more devedesetih |
"Hvala" srdjan za poruku: |
19. 01. 2009. | #6 |
Super Moderator
Knowledge base
Datum učlanjenja: 02.10.2006
Lokacija: Niš
Poruke: 1.618
Hvala: 263
275 "Hvala" u 104 poruka
|
da... +1
ipak se vidi da sam zaboravio sitnice... a flashback jeste... nekad smo svi kuburili sa tim... ovi web jezici nas navikli sve na gotovo |
19. 01. 2009. | #7 |
član
Na probnom radu
Datum učlanjenja: 17.11.2007
Poruke: 36
Hvala: 4
0 "Hvala" u 0 poruka
|
sizeof koristim da program bude nezavisan od masine na kojoj se izvrsava.
|
19. 01. 2009. | #8 |
profesionalac
Professional
|
^ sizeof(char) je uvek 1 bajt. Standard tako kazhe. Osim ako ne ulazish u rasprave tipa shta je "bajt" (ili prevodish taj kod na nekom DSP-u ili mainframe-ovima)
__________________
PHP <del>Rul</del>LOLez! |
19. 01. 2009. | #9 |
dinosaurus
Master
Datum učlanjenja: 29.12.2005
Lokacija: Nova Engleska
Poruke: 636
Hvala: 79
263 "Hvala" u 66 poruka
|
|
19. 01. 2009. | #10 |
profesionalac
Professional
|
^ U kontekstu malloc-a da.
Off Topic: Poenta (nepotrebnog) "osim" su arhitekture sa chudnom oranizacijom memorije, ili nestandardni kompajleri.
__________________
PHP <del>Rul</del>LOLez! |
|
|
Slične teme | ||||
Tema | Početna poruka teme | Forum | Odgovori | Poslednja poruka |
imagedestroy() i zauzeće memorije | Marko Medojevic | Sva početnička pitanja | 6 | 21. 10. 2008. 18:21 |
Vista GUI zauzima 60% memorije | bluesman | Web aplikacije, web servisi i software | 22 | 07. 07. 2007. 20:10 |