关于realloc函数的一个问题
请教一个问题, 比如说,我首先由 malloc()函数分配了一个 100*sizeof(char) 的空间,然后我向里面写入了 50个字符,显然此时会多出 50个空间,但是我不想浪费这50个内存空间, 所以我想用 realloc() 函数重新分配空间,减去多余的50个空间, 但是我执行 ch=(char *)realloc(ch,(100-50)sizeof(char)); 函数却发现空间并没有减少,还是以前的100个空间,(这里只是打个比方来说明问题的本质)。请问,如何做到把已经分配的大存储空间缩小呢???
程序代码:
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { char *temp=NULL; char *str = "gaogaoxingxingqushangxue"; printf("%p \n", temp); temp = (char *) malloc (100 * sizeof(char)); printf("%p \n", temp); strcpy (temp, str); puts(temp); putchar('\n'); temp = (char *) realloc (temp, 50 * sizeof(char)); printf("%p \n", temp); strcpy (temp, str); puts(temp); putchar('\n'); temp = (char *) realloc (temp, 150*sizeof(char)); printf("%p \n", temp); puts(temp); putchar('\n'); return 0; }