动态数组删除期间的分段错误[关闭]

问题描述 投票:0回答:0

我有两个班级。

Shape
是基类,
Rect
是派生类。我创建了两个动态数组:

Shape* pShapes = new Rect[10]; // 1)
Rect* pRects = new Rect[10]; // 2)

然后在做一些操作之后我应该删除内存:

delete[] pShapes;
delete[] pRects;

当我尝试删除

pShapes
时,我看到了
Signal: SIGSEGV (Segmentation fault)
。我想这个错误的发生是因为使用
Shape*
而不是
Rect*
(如第 2 行)。但是第一个数组的这个奇怪的声明是我的任务,我无法编辑它。我怎样才能删除
pShapes

我在 CLion 上使用 MinGW 和 MSYS。

c++ dynamic-memory-allocation mingw-w64
© www.soinside.com 2019 - 2024. All rights reserved.