#include <string.h>
#include <stdlib.h>
int main()
{
char **test;
test = malloc(4);
int i;
for(i=0; i<4; i++)
{
test[i] = malloc(5);
strcpy(test[i], "test");
}
for(i=0; i<4; i++)
{
free(test[i]);
}
free(test);
return 0;
}
Компилю gcc, запускаю. В ответ:
*** glibc detected *** ./a.out: double free or corruption (out): 0x0000000001575030 ***
и дамп памяти далее.
В чем собственно дело?