【发布时间】:2015-07-23 10:34:03
【问题描述】:
如果我分配了一个内存块说
char *a =(char*)malloc(sizeof(char)*10);
我愿意
strcpy( "string of len 5",a);
那么有没有办法释放我剩余的部分内存块?
在其他情况下,如果我这样做
strcpy("string of len5", (a+5));
那么前半部分将是空的。有没有办法free()第一部分而不释放后半部分?
请不要建议realloc(),因为它会在那里分配一块新的内存复制内容并释放之前的内容。(AKAIK)。
【问题讨论】:
-
“请不要推荐
realloc()”——你应该使用realloc()。 -
realloc()有什么问题吗? -
如果“不建议
realloc”的原因是因为该指针有多个别名副本浮动,可能会因调用 realloc 而无效 - 好吧,不要保留指针的多个别名副本。编程需要纪律。祝你好运。 -
BTW
sizeof(char)是多余的,标准保证为1。