提问者:小点点

删除指针的部分内存


有没有什么方法可以删除指针的部分内存。? 例如

char *c = new char[1000];
sprintf(c,"this is it");

正如可以看到的,这里浪费了大量的内存。 我可以释放超过所需的内存吗?


共3个答案

匿名用户

不是直接的。 在C++中,您所能做的最好的事情就是创建一个大小合适的新副本,然后删除旧副本。 没有类似于C的realloc

匿名用户

除非您的系统是RAM受限的嵌入式系统,否则何必费心呢? 只需使用ginormous缓冲区并包含一个“data len”int。

匿名用户

那么,分配另一个具有数据所需精确大小的内存块,将数据复制到那里并释放原始的(非常大的)内存块。 搞定了。