我有以下代码:
int* CoverFunction(){
int* result =new int[3];
result[0]=1;
result[1]=2;
result[2]=3;
return result;
}
这给了我以下警告:
warning: address of local variable ‘result’ returned [-Wreturn-local-addr]
但是使用 new 关键字不就意味着这不应该成为问题吗?在此函数结束后,我的数据是否有被删除的风险,或者它会安全地存在于堆栈中吗?如果它安全地存在于堆栈中,我该如何消除警告?
最佳答案
当您使用 new/malloc 时,内存是从堆中分配的。
因此,在这种情况下不存在变量超出范围的危险,但仍然存在谁会删除该内存的问题?
而且我相信即使使用 malloc 也无法摆脱该警告。
关于c++ - 使用 new/malloc 是否可以绕过本地指针的警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26927826/