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