delete []字符数组

sla*_*ast 5 c++ memory new-operator delete-operator

可能重复:
delete []提供了一个修改过的new-ed指针.未定义的行为?

假设我已经分配了一些字符new char[number].

是否有可能只删除一些结束字符(类似于delete[] (charArray + 4);,除了前四个字符之外,它们应该取消分配所有字符)?

我读到一些实现' new[]存储在对象数组之前分配的对象数,以便delete[]知道要分配多少对象,所以做我要求的事情可能不安全...

谢谢.

编辑:

是否使用单独的delete语句手动删除不需要的结束字节是一种安全的方式来做我要问的事情?

Xeo*_*Xeo 6

不,你必须使用delete[]完全相同的指针new[].


Eti*_*tel 1

唯一“安全”的方法是分配一个新数组,复制数据,然后删除旧数组。或者您可以按照这种std::vector方式区分“容量”(数组的大小)和“大小”(其中元素的数量)。