【发布时间】:2014-04-05 15:42:39
【问题描述】:
上次我在使用 for 循环时经常出错。
最简单的展示方式是:
#include <iostream>
class Class
{
private:
int number;
public:
Class(int a);
void get();
};
Class::Class(int a)
{
number=a;
}
void Class::get()
{
std::cout<<number<<std::endl;
}
int main()
{
int amount=4;
Class* p[amount];
for(int i=0;i<amount;i++)
{
delete p[i];
p[i]=new Class(i);
}
for(int i=0;i<amount;i++)
{
p[i]->get();
}
return 0;
}
程序返回 255,在调试时我收到 SIGSEGV 信号 - 分段错误。
我发现一件很奇怪的事情:当amount=3 或更少的程序正常工作时。我打算将它用于 700 多个元素,所以我发现这非常令人失望。
我正在使用带有 GNU GCC 编译器的 Windows 7 和 Code::Blocks 13.12。
我应该在此程序中进行哪些更改以使其正常运行?我很确定这只是我对 c++ 或类似东西的一点了解。
提前致谢。
【问题讨论】:
-
您应该知道
Class* p[amount];当amount不是编译时间常数时是gcc 编译器扩展,并且不是C++ 语言规范的一部分。
标签: c++ class for-loop segmentation-fault