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]