首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

怎么释放掉p

2012-03-01 
如何释放掉pint main(void){int i 0char **pp (char**)malloc(sizeof(char)*10)for ( i 0 i 1

如何释放掉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),那就会造成越界写入!

热点排行