【发布时间】:2012-03-26 22:27:51
【问题描述】:
我正在为现有的主程序编写一个类,它在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*);
【问题讨论】:
-
没有为
Asteroid::vertices分配内存。另外,请使用std::vector。 -
除了出于病态的好奇心之外,您根本不应该使用指针,
new和delete。 -
in是什么?你的意思是std::cin? -
@ShiggityShiggityShwa:取决于他们所处的级别。如果这是一个面向初学者的 C++ 课程,他们甚至不应该谈论指针或
new或delete -
当你说“我们不教他们语言的核心元素”,然后接着说“你表现得好像他们不会学习语言”时,好像我没有甚至不必回应就可以表达我的观点。如果您想教授没有内存管理的 C++,请教 Java。工业中没有“现代 C++”之类的东西。只有在您需要这些功能时才使用 C++。
标签: c++ class memory-management segmentation-fault