c++ - 删除 [] 时出现段错误

标签 c++ class memory-management segmentation-fault

我正在为一个现有的主程序开发一个类,它在 delete [] 行抛出一个段错误。我不太确定为什么要这样做。我问过教授,我被告知重新阅读关于指针如何被破坏的部分。任何帮助,将不胜感激!相关代码如下。

主要内容:

Point* v = new Point[nVertices];
for (int i = 0; i < nVertices; ++i)
  in >> v[i].x >> v[i].y;
Asteroid aster1 (nVertices, v);
delete [] v;

小行星构造函数的类部分:

Asteroid::Asteroid(int nVertices, Point vertexPoints[]){
    numVertices = nVertices;
    for (int i = 0; i < numVertices; i++){
        vertices[i] = vertexPoints[i];
    }
}

如果这很重要,还有 .h 部分:

class Asteroid{
    int numVertices;
    Point vertices[];
public:
    //Attributes
    Asteroid (int,Point*);

最佳答案

段错误看起来不太可能出现在 delete[] 行。它更有可能发生在 Asteroid 构造函数中,因为在创建应该包含顶点的数组之前,您已经尝试访问顶点。

关于c++ - 删除 [] 时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9880795/

相关文章:

c - realloc 和 malloc 函数

ios - alloc 方法是否增加对象的引用计数

c++ - 了解导入在 C++ 中的工作原理

java - 类中的内部接口(interface)

objective-c - 何时以及为何释放对象

class - 在 TypeScript 中,如何防止在派生类上调用方法?

c++ - 无法在 C++ 中调用 const 引用参数的方法

c++ - 如何使用 Qt 阻止 tcp 套接字?

c++ - 在 C++ 中处理 C 库匿名结构类型

c++ - 为什么概念 c++ 中没有前向声明?