gpt4 book ai didi

调用 delete[] 后仍可访问 C++ 指针数组

转载 作者:行者123 更新时间:2023-11-28 00:03:07 24 4
gpt4 key购买 nike

在下面的代码中,调用了一次delete[]来释放new分配的内存。但是,调用 delete[] 后数组元素仍然可以访问。我两次调用 delete[] 以确认我收到了 double free or corruption 错误,这意味着内存已释放。如果内存被释放,我如何访问数组元素?如果我正在向堆中读取类似密码的内容,这可能是一个可能被利用的安全问题吗?

int *foo;
foo = new int[100];

for (int i = 0; i < 100; ++i) {
foo[i] = i+1;
}

cout << foo[90] << endl;
delete[] foo;
cout << foo[90] << endl;

给出以下输出

91
91

int *foo;
foo = new int[100];

for (int i = 0; i < 100; ++i) {
foo[i] = i+1;
}

cout << foo[90] << endl;
delete[] foo;
delete[] foo;
cout << foo[90] << endl;

给予

*** 错误 ./a.out':双重释放或损坏(顶部):0x000000000168d010 ***`

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