如何释放掉p
int main(void)
{
int i = 0;
char **p;
p = (char**)malloc(sizeof(char)*10);
for ( i = 0; i < 10; i++)
{
p[i] = (char *)malloc(sizeof(char)*10);
p[i] = "nihaojiuhjf";
}
return 0;
}
请问 如何释放掉p???
[解决办法]
p = (char**)malloc(sizeof(char)*10);应该为
p = (char**)malloc(sizeof(char*)*10);
释放掉p 如下
for ( i = 0; i < 10; i++)
{
if(p[i])
free(p[i]);
}
if(p)
free(p)
[解决办法]
因为p是双重指针,也就是说他所指向的地址区域内存放的都是指向char的指针,指向char的指针的宽度为sizeof(char *)。如果你用sizeof(char),那就会造成越界写入!