我有以下代码:
int* CoverFunction(){
int* result =new int[3];
result[0]=1;
result[1]=2;
result[2]=3;
return result;
}
这给了我以下警告:
警告:返回本地变量'result'的地址[-Wreturn-local-addr]
但是不使用new关键字意味着这应该不是问题?在此功能结束后我是否有丢失数据的风险,或者它是否会安全地存在于堆栈中?如果它安全地存在于堆栈中,我该如何摆脱警告?
答案 0 :(得分:2)
当你使用new / malloc时,内存是从堆中分配的。
因此,在这种情况下,变量没有超出范围的危险,但仍然有人会删除那些记忆吗?
即使您使用malloc,我相信您也无法摆脱警告。