gpt4 book ai didi

c++ - delete[] 是否释放整个内存块?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:07:24 24 4
gpt4 key购买 nike

考虑以下几点:

char* msg = new char[20]; 
msg[4] = '\0';
delete[] msg;
  1. delete[] msg 是否释放了分配给 msg 的所有 20 个字符,还是仅释放了 \0 之前的那些字符?
  2. 如果它只释放到 \0,我怎样才能强制它删除整个内存块?

最佳答案

您问题中的原始代码具有未定义的行为,因为您将 deletenew[] 一起使用。

我注意到您已通过将 delete 替换为 delete[] 来修复它:

delete[] msg;

这是正确的,并且会释放所有由 new[] 分配的内存。

没有“删除到 \0”或任何其他此类“部分”删除的概念。只能删除分配有 new/new[]complete block ,因此您的代码没问题。

关于c++ - delete[] 是否释放整个内存块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13688516/

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