c++ 在子函数中申请堆内存的空间无法在主函数中用free把在子函数中申请的堆内存释放,打代码编译时它说使用了未定义
应该是作用域的问题,子函数里面声明的变量作用域是子函数内,等返回主函数后,子函数在栈里的空间会被回收,所以在主函数中找不到这个指针变量,于是就报未定义了。
你可以在子函数return的时候将那个指针也返回给主函数,这样就可以在主函数中free掉那块内存了。祝好!
应该是因为你在使用free时用的是子函数中的局部变量名引起的,可以通过使用全局变量或传入参数的形式来解决。
例如
//全局变量
int *a;
//子函数中
a =(int *) malloc(sizeof(int));
//主函数
free (a);
子函数申请的空间,如果要在外部释放,那么该空间应该在外部声明(扩大作用域,默认值指定NULL),在子函数中声明,在外部释放。
这种方式是解决内存泄露常用方法。扩大作用域法。