gpt4 book ai didi

c++ - 使用 Xcode 的 g++ 创建动态分配的数组

转载 作者:行者123 更新时间:2023-11-28 05:58:28 25 4
gpt4 key购买 nike

所以,我最近尝试这样做:

void Foo(int **bar, int size) {
bar = new int *[size];
for (int i = 0; i < size; i++)
bar[i] = new int[4];
// Do other stuff
return;
}

int main(int argc, char *argv[]) {
int ** data;
int size = atoi(argv[1]);
Foo(data, size);
for (int i = 0; i < size; i++) {
for (int j = 0; j < 4; j++)
cout << "i = " << i << ", j = " << j << ", data = " << data[i][j] << endl;
// Do other stuff
}

for (int i = 0; i < size; i++)
delete[] data[i];
delete[] data;
return 0;
}

并且我总是会在那个 cout 语句处得到一个段错误。更改代码以便在 main 中动态分配数组后,问题就消失了。因此,段错误之间的区别在于数组是否在同一函数中动态分配和销毁。这对我来说似乎是错误的,因为这不应该是传统 C++ 的问题。我正在使用带有 Xcode 的 MacBook 来执行 g++ 命令。任何人都可以确认 Xcode 的实现是这样做的吗?

最佳答案

这不是 Xcode 或 g++ 特有的 - 只是代码中的错误 - 您需要通过引用传递 bar 才能将其用作输出参数。

改变:

void Foo(int **bar, int size)

到:

void Foo(int ** &bar, int size)

请注意,通常最好使用例如std::vector 而不是用于数组等的裸 C 风格指针

关于c++ - 使用 Xcode 的 g++ 创建动态分配的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33717040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com