c++ 堆内存释放的问题

c++ 在子函数中申请堆内存的空间无法在主函数中用free把在子函数中申请的堆内存释放,打代码编译时它说使用了未定义

3个回答

应该是因为你在使用free时用的是子函数中的局部变量名引起的,可以通过使用全局变量或传入参数的形式来解决。
例如
//全局变量
int *a;

//子函数中
a =(int *) malloc(sizeof(int));

//主函数
free (a);

应该是作用域的问题,子函数里面声明的变量作用域是子函数内,等返回主函数后,子函数在栈里的空间会被回收,所以在主函数中找不到这个指针变量,于是就报未定义了。
你可以在子函数return的时候将那个指针也返回给主函数,这样就可以在主函数中free掉那块内存了。祝好!

子函数申请的空间,如果要在外部释放,那么该空间应该在外部声明(扩大作用域,默认值指定NULL),在子函数中声明,在外部释放。
这种方式是解决内存泄露常用方法。扩大作用域法。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问