Leisure_水中鱼 2023-07-14 23:55 采纳率: 100%
浏览 31
已结题

我用初始化列表给指针开堆区空间,在释放空间的时候VStudio报错

我用初始化列表给指针开堆区空间,在释放空间的时候VS报错,报错如下:

img

img


我的代码如下:

InstructionQueue::InstructionQueue(unsigned char size): size(size + 1), front(0), rear(0), instruction(new char[this->size])
{
}
InstructionQueue::~InstructionQueue()
{
    delete[] instruction;
    if (instruction)
    {
        instruction = nullptr;
    }
}

我使用的是VS2022。
我有尝试过寻找原因:
1.不是重复释放空间问题,因为我写了深拷贝构造,重复释放是另一种报错提示。
2.就报错是出在delete[]那一句,因为注释掉就正常运行了。但是问题是出在初始化列表,因为把初始化列表改成构造函数内开空间,就不会出现这个问题。
3.如果不使用初始化列表,在构造函数内开空间也没有报错:

InstructionQueue::InstructionQueue(unsigned char size): size(size + 1), front(0), rear(0)
{
    instruction = new char[this->size];
}

4.我尝试问gpt,gpt说没有任何问题,提供的推荐方法也都无法解决这个问题。
请赐教,万分感激!

  • 写回答

2条回答 默认 最新

  • threenewbee 2023-07-15 00:17
    关注

    这种指针初始化写在初始化列表的写法比较罕见,我们通常都是下面那种写法,放在构造函数里去写。
    我怀疑是CRT检测机制存在误报。
    你可以反汇编跟踪下

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月23日
  • 已采纳回答 7月15日
  • 修改了问题 7月15日
  • 创建了问题 7月14日

悬赏问题

  • ¥20 python忆阻器数字识别
  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 振荡电路,ADS仿真