我有以下代码:

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/

10-12 03:02
查看更多