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

这样会不会造成内存泄漏啊解决思路

2012-05-30 
这样会不会造成内存泄漏啊????????????????动态申请二维数组一开始我把数组设置为10行5列的(int **p)(int

这样会不会造成内存泄漏啊????????????????
动态申请二维数组
一开始我把数组设置为10行5列的 
(int **p)=(int **)malloc(sizeof(int *)*10);
for(i=0;i<10;i++)

  (int *)(p+i)=(int *)malloc(sizeof(int)*5);
}

现在改成5行5列的

(int **p)=(int **)realloc(p,sizeof(int *)*5);
for(i=0;i<5;i++)

  (int *)(p+i)=(int *)malloc(sizeof(int)*5);
}

大家看看这样会不会内存泄露啊?realloc能不能深层释放指针所指向空间的指针所指向的空间啊????????

[解决办法]
为了保险起见,最好先释放内存再分配!!!!

[解决办法]
不行
realloc只会释放(int **p)=(int **)malloc(sizeof(int *)*10);的内存
而(int *)(p+i)=(int *)malloc(sizeof(int)*5);一级的你要先于realloc p之前手动释放
[解决办法]
先free,再分配
[解决办法]
好像会的,在进行realloc后,原先分配的里层内存区域已经不受你控制了,所以没有释放,也没有办法释放了,
回答不好别见怪。

[解决办法]
+1

探讨

不行
realloc只会释放(int **p)=(int **)malloc(sizeof(int *)*10);的内存
而(int *)(p+i)=(int *)malloc(sizeof(int)*5);一级的你要先于realloc p之前手动释放

[解决办法]
void *realloc(void *p, size_t size)
realloc changes the size of the object pointed to by p to size. The contents will be unchanged up to the minimum of the old and new sizes. If the new size is larger, the new space is uninitialized. realloc returns a pointer to the new space, or NULL if the request cannot be satisfied, in which case *p is unchanged.

它只会释放你指定的内存 -- *p
[解决办法]
谁malloc谁free;

热点排行
Bad Request.