URL*_*L87 6 c++ arrays char delete-operator
考虑以下:
char* msg = new char[20];
msg[4] = '\0';
delete[] msg;
Run Code Online (Sandbox Code Playgroud)
delete[] msg分配了所有20个字符msg或仅仅是那些\0?\0,我怎么强制它删除整个内存块?NPE*_*NPE 10
在你的问题的原代码有不确定的行为,因为你用delete用new[].
我注意到,你已经通过更换固定它delete具有delete[]:
delete[] msg;
Run Code Online (Sandbox Code Playgroud)
这是正确的,并将释放已分配的所有内存new[].
没有"删除直到\0"或任何其他此类"部分"删除的概念.只有/ 可以删除分配了/的完整块,因此您的代码很好.newnew[]
的delete[]操作者删除的存储器的整个块.您无法释放部分内存块 - 您只能解除分配整个块.
这也是的情况下new/delete,和malloc/free.解除分配功能只能解除分配整个内存块.
| 归档时间: |
|
| 查看次数: |
466 次 |
| 最近记录: |