使用删除时检测到堆损坏

时间:2015-02-16 20:48:36

标签: c++

我运行此代码并在visual studio中得到此异常:

int main ()
{
int * x=new int(23);
for(int i=0;i<9;i++)
{
    x[i]=i;
}
delete []x;
return(0);
}

感谢您的帮助;)

2 个答案:

答案 0 :(得分:2)

int * x = new int(23);没有按你的想法行事。它为int分配内存并赋值为23.

你想要做的是:

int * x = new int[23];

虽然,如果尺寸发生变化,我建议您使用std::vector;如果尺寸有问题,我建议使用std::array

答案 1 :(得分:0)

如果您使用new,则需要使用delete。如果您使用new[],则需要使用delete []new()new[]不同。 new(someval)将新对象设置为someval。它不会产生大量的对象。