gpt4 book ai didi

c++ - 如何在C++中删除一个char指针

转载 作者:行者123 更新时间:2023-11-30 00:45:52 25 4
gpt4 key购买 nike

所以如果我声明下面的代码

int main() {
char* c = new char[20];
delete c;
return 0;
}

为什么我没有内存泄漏?是不是删除的正确方法

delete[] c;

这两种方法都有效,而且我都没有发生内存泄漏。

最佳答案

第一种方式有效。它只是看起来有效。

这被称为 Undefined Behaviour : 如果你做错了什么,C++ 不会牵着你的手。它允许编译器假定您不会犯某些类型的错误,因为检查这些错误会减慢您的程序。

如果您编写未定义行为,您的程序可以做任何事情。包括:

“看似完美地工作”实际上是最糟糕的,因为您没有意识到自己有错误。直到你移植到一个不同的平台,或者获得一个新的编译器版本,或者其他的改变,然后你开始得到奇怪的结果,但是当然,这段代码已经工作了很多年,所以不可能是您的代码出错了……可以吗?

好的编译器无论如何都会提示其中一些类型的错误,即使它们不是必需的,尤其是当您打开额外警告时。此外,静态分析 工具可以帮助您捕获更多此类错误。 (只需搜索该术语;在这里提出建议显然是题外话)。

关于c++ - 如何在C++中删除一个char指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41158487/

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