zltzlt 发表于 2020-2-9 18:45:12

C++ address of local variable returned

这个问题很普通,也很常见,例如下面的代码就会报这个警告,原因在于 a 是局部变量,在栈上分配空间,当函数结束后会回收空间,这样 a 返回的内容无效。

#include <iostream>
using namespace std;

int *test()
{
    int a[] = {1, 2, 3, 4, 5};
    return a;
}

int main()
{
    return 0;
}

解决方法是在堆上申请空间,然后返回:

#include <iostream>
#include <cstdlib>

using namespace std;

int *test()
{
    int *a = (int *)malloc(5);
    a = 1;
    a = 2;
    a = 3;
    a = 4;
    a = 5;
    return a;
}

int main()
{
    return 0;
}
页: [1]
查看完整版本: C++ address of local variable returned