Pagina 1 di 1

[RISOLTO] [C] malloc e free strano errore

Inviato: sabato 9 febbraio 2008, 14:26
da kiroken_
ciao ho un problema data questa funzione:

Codice: Seleziona tutto

char **array=malloc(sizeof(char)*count);
	int i; char **parray=array; 
        printf("count= %i des-sin=%i\n",count,des-sin);
	for ( i=0;i<count/2;i++, parray++ ) {
		*parray=malloc(sizeof(char)*(des-sin));
		printf("1° in %i ",i);
                free(*parray);
                printf("out %i\n",i);
	}
	for ( ;i<count;i++, parray++ ) {
		*parray=malloc(sizeof(char)*2);
		printf("2° in %i ",i);
                free(*parray);
                printf("out %i\n",i);
	}
	return 1;
e ottengo come output

Codice: Seleziona tutto

count= 4 des-sin=9
1° in 0 out 0
1° in 1 out 1
2° in 2 out 2
*** glibc detected *** ./a.out: double free or corruption (out): 0x0000000000603030 ***
======= Backtrace: =========
/lib/libc.so.6[0x2ae7e9199b0a]
/lib/libc.so.6(cfree+0x8c)[0x2ae7e919d6fc]
./a.out[0x401b7a]
./a.out[0x401bea]
/lib/libc.so.6(__libc_start_main+0xf4)[0x2ae7e9145b44]
./a.out[0x400b89]
======= Memory map: ========
00400000-00403000 r-xp 00000000 08:04 1226560                            /home/kiroken/Squola/lls/Progetto/a.out
00602000-00603000 rw-p 00002000 08:04 1226560                            /home/kiroken/Squola/lls/Progetto/a.out
00603000-00624000 rw-p 00603000 00:00 0                                  [heap]
2ae7e8f0a000-2ae7e8f27000 r-xp 00000000 08:05 621388                     /lib/ld-2.6.1.so
2ae7e8f27000-2ae7e8f2b000 rw-p 2ae7e8f27000 00:00 0
2ae7e9126000-2ae7e9128000 rw-p 0001c000 08:05 621388                     /lib/ld-2.6.1.so
2ae7e9128000-2ae7e927a000 r-xp 00000000 08:05 621886                     /lib/libc-2.6.1.so
2ae7e927a000-2ae7e9479000 ---p 00152000 08:05 621886                     /lib/libc-2.6.1.so
2ae7e9479000-2ae7e947c000 r--p 00151000 08:05 621886                     /lib/libc-2.6.1.so
2ae7e947c000-2ae7e947e000 rw-p 00154000 08:05 621886                     /lib/libc-2.6.1.so
2ae7e947e000-2ae7e9484000 rw-p 2ae7e947e000 00:00 0
2ae7e9484000-2ae7e9491000 r-xp 00000000 08:05 621442                     /lib/libgcc_s.so.1
2ae7e9491000-2ae7e9691000 ---p 0000d000 08:05 621442                     /lib/libgcc_s.so.1
2ae7e9691000-2ae7e9692000 rw-p 0000d000 08:05 621442                     /lib/libgcc_s.so.1
2ae7ec000000-2ae7ec021000 rw-p 2ae7ec000000 00:00 0
2ae7ec021000-2ae7f0000000 ---p 2ae7ec021000 00:00 0
7fffc1b8b000-7fffc1ba0000 rw-p 7fffc1b8b000 00:00 0                      [stack]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vdso]
2° in 3 Aborted (core dumped)
e non ne capisco il motivo qualcuno ha qualche idea?

Re: [C] *** glibc detected *** ./a.out: double free or corruption

Inviato: sabato 9 febbraio 2008, 15:11
da kiroken_
.

Re: [RISOLTO] [C] malloc e free strano errore

Inviato: sabato 19 dicembre 2009, 15:21
da angelotm
non conosco bene l'uso di malloc, cmq posso dirti che:

"char **array=malloc(sizeof(char)*count);"
dovrebbe essere
"char **array=malloc(sizeof(char *)*count);"
poi:
for ( i=0;i si scrive scuola..

Re: [RISOLTO] [C] malloc e free strano errore

Inviato: sabato 19 dicembre 2009, 15:44
da kiroken_
grazie per la risposta (comunque il post ha quasi 2 anni)

lo so che si scrive scuola quel nome ha radici storiche.