指向指针数组的指针导致seg错误

Pointer to array of pointers results in seg fault

本文关键字:指针 seg 错误 数组      更新时间:2023-10-16

我正在为学校做一个项目,并面临这个基本问题(这不是作业的一部分,只是问题初始阶段的一个挫折)。

我正在尝试创建一个指向数组的指针。数组包含指针,每个指针指向一个类对象"Customer"。

这是顾客。这是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

分配一个指针数组不会为这些指针所指向的对象分配任何东西

c_array = new Customer*[10];

创建一个指针数组,但它们指向某个随机位置(当您试图取消引用它们时会导致分段错误)。您还需要编写一个循环来初始化这些指针。

使用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;
}