繁体   English   中英

访问冲突删除的2D阵列

access violation in deleting a 2d array

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有对象指针的二维数组,我试图写一个释放器为对象的数组中删除这两个指针,然后删除该数组本身。 我限定在对象的头阵列被析构像这样

    space* board[6][6];

我分配像这样的阵列中的空间物体:

    board[0][0]= new space(1,0);
    board[0][1] = new space(1, 0);
    board[0][2] = new space(1, 0);

我目前的析构函数是这样的

    for (int i = 0; i < 6; ++i)
{
    for (int j = 0; j < 6; ++j){
        delete board[i][j];
    }
    delete[] board[i];
}
delete[] board; 

当我这样做,我得到这个消息:未处理的异常在0x5080A9E8(msvcr120d.dll)在Blitz.exe:0000005:访问冲突读取位置0xFEEEFEE2。

我不太确定该怎么办,我尝试环顾四周,看来我的析构函数应该还可以。 我知道,如果我有一个体面的编程教育,我会用更好的东西,就像一个载体或别的东西。 我下载了有关人们近来如何实际使用C ++的pdf文件,我可能很快就会讲到,但是我只想处理这种内存泄漏并继续前进。

2 个回复

您正在将newdelete[]混合使用。 因此,程序的行为是不确定的

如果您改用std::vector<std::vector<space>>会更好。 然后,将为您完成内存管理。

但是,如果你正在制作一个矩阵那么这也不是一个好的选择:它会产生“锯齿状边缘”和分配的内存是不连续的。

一个好的替代办法是分配一个连续块,并使用常规(i * rows + j)用于在元件(i, j) 一个std::vector<space>就足够了。 然后考虑使用第三方矩阵库,例如BLAS(www.boost.org)。

boardboard[i]变量不应delete d,因为它们尚未由new分配。

1 2D阵列访问冲突

我尝试调试以下代码,但出现“访问冲突”错误。 我不明白为什么在访问第二行元素时第二个循环失败,而第一个循环却能够访问所有元素。 我弄乱了* , &amp;和[] ,但无法弄清楚。 谢谢。 ...

2 C ++大型2D阵列访问冲突

因此,我有一个为找到最佳的二进制搜索树而创建的程序,当数据集大约为100时,它的效果很好,但是当我尝试使用&gt; 1000的数据集时,当weight [i] [i ] =频率[i]; 在computeOBST函数内部被调用。 我不确定该数据集是否很大。 我被困住了,不知道还有什么可以尝试 ...

2015-11-24 01:58:20 2 107   c++
4 2D阵列-排序| 访问冲突读取位置错误| 在C中

嗨,我正在尝试完成我的代码,但是当我要输入留置号码54或60时,我没有得到值,而是得到了一条错误消息msg。 这是错误消息。 Unhandled exception at 0x013137b2 in LB_12.exe: 0xC0000005: Access violation r ...

5 写入动态2D阵列时出现访问冲突…有时

该程序旨在生成动态数组,但是在给定特定尺寸的情况下进行写入时会产生访问冲突错误。 例如:R = 6,C = 5崩溃,但随后R = 5,C = 6没有崩溃。 如果您想知道,“修复”这个坏程序不是我的工作,这是我们在课堂上教的方法。 我评估的一部分也是使用此方法,因此无法使用向量。 提前致谢 ...

7 访问冲突写入位置-2D字符数组

我正在尝试在Windows控制台中制作蛇形克隆。 我正在尝试使用此功能绘制边框: 如果传递的高度大于32,则会出现“访问冲突写入位置”错误。 如果小于或等于32,则似乎工作正常。 ...

2020-02-14 17:54:46 0 40   c
8 使用2D数组写访问冲突

我正在尝试将字符放入2D数组中。 我已经定义了这些对象: 我的spawn函数为我的对象提供随机数(或坐标) putBoard函数将字符放置在适当的坐标中: 但是,运行该程序时,出现“抛出异常:写访问冲突。板为0x21C3BD2”。 在“ board-&gt;board ...

9 访问已删除的阵列访问冲突异常

我想访问已删除的数组,以查看内存是如何更改它的工作,直到我删除真的大数组然后我得到access violation exception 。 请不要关心cout我知道他们很慢但我会摆脱它们。 当我为1000个元素阵列做它时,它是可以的,当我为1000000做它我得到一个例外。 我知道这是一项 ...

10 访问冲突写入位置c,2D动态数组

亲爱的用户,我正在尝试将数据写入数组,但是由于某种原因,我一直都收到此错误。.请帮助我 我总是从a[i][j]=rand()%2;行中得到错误a[i][j]=rand()%2; Acces违反规定的位置,请帮帮我! ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM