【发布时间】:2017-08-18 13:51:33
【问题描述】:
当我使用malloc 分配数组时,有没有办法只释放数组的第一个元素?
一个小例子:
#include <stdlib.h>
#include <string.h>
int main() {
char * a = malloc(sizeof(char) * 8);
strcpy(a, "foo bar");
// How I would have to do this.
char * b = malloc(sizeof(char) * 7);
strcpy(b, a+1);
free(a);
free(b);
}
有没有办法只释放a 的第一个字符,以便我可以使用a+1 来使用字符串的其余部分?
【问题讨论】:
-
不,你不能只释放一个字节的数组。您只能释放从
malloc返回的指针,该指针指向已分配数组的第一个字节,并且它还将释放所有已分配的字节数组。无论如何,您可以将其重新分配到您想要的大小,这可以是更多或更少的字节然后实际大小。 -
更重要的是,为什么????
-
看看this Dupe???
-
您可以使用另一个指针,使用
char *b = a + 1;及以后,您只需free(a); -
@WeatherVane 我知道。我只是想知道这是否可能。