我正在尝试声明一个指针并将该指针传递给一个函数,其中会分配内存。这是一个最小的示例:
#include <string>
#include <iostream>
using namespace std;
void alloc_mem(int &size, double *x);
int main()
{
double *X;
int imax;
alloc_mem(imax, X);
cout << "imax = " << imax << endl;
for (int i = 0; i < imax; i++) {
cout << "X = " << X[i] << endl;
}
delete[]X;
return 0;
}
void alloc_mem(int &size, double *x)
{
size = 10;
x = new double[size];
for (int i = 0; i < size; i++) {
x[i] = (double)i;
}
}
这段代码可以编译通过,但是当我尝试打印X的值时,会出现分段错误。我知道我没有正确地将变量传递到函数中,但我不确定如何做到这一点。我相信我正在操作X的副本。
此外,这段代码是为了复制我在一个更大的代码中遇到的问题而编写的。
void alloc_mem(int &size, double*& x);
,否则x
只会在函数内被修改。 - Jarod42std::vector<double>
。 - Ivan