gpt4 book ai didi

c++ - 如何避免访问被删除的内存块时出错?

转载 作者:行者123 更新时间:2023-11-30 01:53:54 25 4
gpt4 key购买 nike

如果标题不清楚,我有这个例子:

    int *a = new int[5];
int*b = a;
delete[] a;
a = NULL;

现在 a 是 NULL 但 b 不是。如果我访问 b,它将返回错误的值并可能使程序崩溃。

如何防止这种情况?

最佳答案

now a is NULL

不完全是。 a 指向一些“无效”(删除-d)内存。如果您希望它为 NULL,请手动取消它。


delete a;

必须是

delete[] a;

How to prevent this happen?

没办法,如果你真的需要使用(原始)指针 - 请注意 a 的生命周期。它与引用类似 - 你也应该小心。

为了避免类似的情况,智能指针很有用。或者只是使用堆栈变量(当然,在适用的情况下)。

关于c++ - 如何避免访问被删除的内存块时出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22637595/

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