我正在为一所学校的项目工作,并面临这个基本问题(这不是任务的一部分,只是问题初始阶段的挫折)。
我正在尝试创建一个指向数组的指针。该数组包含指针,每个指针指向一个类对象“Customer”。
这是customer.h。 这是customer.cpp。
最后,这是我的主要内容,这会导致问题:
#include "customer.h"
int main () {
Customer** c_array;
c_array = new Customer*[10];
cout << c_array[0]->getEnter() << endl;
return 0;
}
有什么想法吗?
这是错误:
Segmentation fault: 11
答案 0 :(得分:4)
分配指针数组不为这些指针指向的内容分配任何内容。所以你的陈述:
c_array = new Customer*[10];
创建一个指针数组,但它们指向某处随机(当您尝试取消引用它们时会导致分段错误)。您还需要编写一个循环来初始化这些指针。
答案 1 :(得分:1)
通过使用c_array = new Customer*[10]
,您只会在堆上创建一堆指针,而您没有为实际的客户分配内存。在此之后,您必须为每个Customer Object
分配内存。请改用以下内容:
int main () {
Customer* c_array[10];
for(unsigned int i = 0; i < 10; ++i)
c_array[i] = new Customer;
cout << c_array[0]->getEnter() << endl;
return 0;
}
或
int main () {
Customer* c_array;
c_array = new Customer[10];
cout << c_array[0]->getEnter() << endl;
delete[] c_array;
return 0;
}
或
#include <vector>
int main () {
std::vector<Customer> c_array(10);
cout << c_array[0]->getEnter() << endl;
return 0;
}