请教一个内存分配上的问题
- C/C++ code
//现在,我声明了这样的一个数组char *str=new char[13];str="123456789";// 此时,strlen(str)返回值为9//现在,我强行把str掐断:str[5]=NULL;//此时,strlen(str)返回值为5的确,字符串长度缩短了,但这个数组的所占的内存是否还是13个字节?,如果是,如何把多余的字节也释放掉? 当然,我可以先把掐断后得到的字符串转移到新的合适大小的数组里去,再释放原数组,但我不想这么做,这样做开销恐怕更大
[解决办法]
内存仍然13字节。
在C语言里面,
malloc : 分配内存
realloc : 重新分配内存
void * realloc ( void * ptr, size_t size );
Reallocate memory block
The size of the memory block pointed to by the ptr parameter is changed to the size bytes, expanding or reducing the amount of memory available in the block.
这就解决问题了,可以结贴了
[解决办法]
哦, 仔细一看,你的代码,有一些错误写法。
[解决办法]
#pragma comment(linker,"/SECTION:.rdata,RW")
[解决办法]
[解决办法]
[解决办法]
我不觉得 你这个需求有什么必要之处,你这么做还不如在new内存之前获取字符串的长度,然后再进行内存分配,如果new之前无法获取字符串的长度 那么用vector或者string吧。节省那么一点点内存花的开销未必值得。