c++ - 使用 new/malloc 是否可以绕过本地指针的警告?

标签 c++ pointers warnings compiler-warnings

我有以下代码:

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/

相关文章:

c++ - 对 pair 和 double 的映射进行排序

python - 使用 Ctypes (SpecialKEval) 将 C++ 代码嵌入到 Python 中

c++ - 如何在 Win32 应用程序中填充文件夹浏览器

c++ - 如何使用 WinAPI(不是 WMI)枚举系统还原点?

c - 访问地址内保存的地址

c++ - 通过基类指针获取子类类型

C++ 创建和销毁 unique_ptr 指针

c++ - 禁用非 POD 类的默认构造函数

android - 这个警告是由我的应用程序引起的吗? - "Implicit intents with startService are not safe"

c++ - 这是一个真正的问题 : warning C4172: returning address of local variable or temporary