我在玩C++,偶然发现了这个问题。我试图在堆上初始化一个数组指针,它在initialize()
内部工作,在那里它输出69
,但在main()
中,它崩溃,出现错误EXC_BAD_ACCESS
。阵列初始化函数
#include <iostream>
void initialize(int* array, int size) {
array = new int[size];
// Testing
array[2] = 69;
std::cout << array[2] << std::endl; // Works fine
}
int main() {
int size = 3;
int* array;
// Initializing
initialize(array, size);
// Testing
std::cout << array[2] << std::endl; // Crash, EXC_BAD_ACCESS
// Cleanup
delete[] array;
array = nullptr;
return EXIT_SUCCESS;
}
请帮我理解这个问题。
是的,我知道我应该使用std::vector
,但我想知道为什么这不起作用:)
对于这个问题,它在删除[]功能崩溃也与错误文本“指针贝ng释放没有被分配“ –
通过值传递你的'array'指针到你的函数 - 所以当你给它分配'new int [size]'时,main中的数组保持不变。 – melak47
@MadsMarquart嗯,我很确定我们有这个问题的副本,我看到它每月询问约3-5次。虽然可能有太多重复,但我们没有真正的规范问答。 –