★大家看看下面的代码存在什么问题★

蓝色玺印 2011-11-08 04:07:56
编译无错。

#include <stdlib.h>

void func(void)
{
int *pi = 0;

int i = 0;
for ( ; i<10; i++ ) {
pi = (int *)malloc( sizeof(int) );
}

if ( pi ) {
free( pi );
}
}
...全文
45 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
canican 2011-11-08
  • 打赏
  • 举报
回复
分配了10次,释放了1次,内存泄露
witwolf 2011-11-08
  • 打赏
  • 举报
回复
1L正解
linguimin 2011-11-08
  • 打赏
  • 举报
回复
你开辟了10次内存空间,都存到pi里。
pi不是数组,只能保存一个指针。
所以前面9次开辟的空间地址都丢了,pi只保存了最后一次开辟的地址
xiejijun_05 2011-11-08
  • 打赏
  • 举报
回复
内存泄露了,只释放了最后一次申请的内存.

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧