有什么办法可以删除指针的部分内存。 例如
char *c = new char[1000];
sprintf(c,"this is it");
可以看出,这里浪费了很多内存。我可以释放超过要求的内存吗?
答案 0 :(得分:1)
不直接。你可以用C ++做的最好的事情就是制作一个大小合适的新副本并删除旧的副本。没有类似C的realloc
。
答案 1 :(得分:0)
除非您的系统是RAM限制的嵌入式系统,否则为什么要这么麻烦?只需使用巨大的缓冲区并包含'dataLen'int。
答案 2 :(得分:0)
好吧,分配另一个具有数据所需精确大小的内存块,在那里复制数据并释放原始(非常大)的内存块。完成。