这样会不会造成内存泄漏啊????????????????
动态申请二维数组
一开始我把数组设置为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