gpt4 book ai didi

c++ - 为什么 delete[] 会导致这个测试程序崩溃

转载 作者:行者123 更新时间:2023-11-28 01:56:20 25 4
gpt4 key购买 nike

<分区>

我声明了一个新的指针数组。 我的问题是:为什么用delete[]删除数组会导致程序崩溃?示例代码:

#include <iostream>

using namespace std;

typedef unsigned int uint32;

struct demon{
private:
static uint32 next_id;
public:
uint32 id;
demon(){
id = demon::next_id;
demon::next_id++;
}
};

uint32 demon::next_id = 1;

int main(){
demon** demons = new demon*[5];
demon d1;
demon d2;
demon d3;
demon d4;
demon d5;

demons[1] = &d1;
demons[2] = &d2;
demons[3] = &d3;
demons[4] = &d4;
demons[5] = &d5;

cout << demons[1]->id << endl;
cout << demons[2]->id << endl;
cout << demons[3]->id << endl;
cout << demons[4]->id << endl;
cout << demons[5]->id << endl;

delete[] demons; // without this, the code works
return 0;
}
*** Error in `./test': free(): invalid next size (fast): 0x0000000000e68c20 ***
Aborted

我在没有删除的情况下也测试了内存泄漏,程序会出现段错误。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com