【发布时间】:2011-04-14 18:42:30
【问题描述】:
int* f()
{
int *p = new int[10];
return p;
}
int main()
{
int *p = f();
//using p;
return 0;
}
当函数返回它的值时,在堆栈销毁期间,某些编译器(当我被告知时暗示了常见的编译器,如 VS 或 gcc)是否可以尝试自动释放由本地指针(如本例中的 p)指向的内存?即使不是,我是否能够正常删除 [] 在 main 中分配的内存?问题似乎是关于确切数组大小的信息在这一点上丢失了。另外,在 malloc 和 free 的情况下答案会改变吗?
谢谢。
【问题讨论】:
标签: c++ c memory allocation