注册 登录
编程论坛 数据结构与算法

关于realloc函数的一个问题

long361800 发布于 2011-07-31 09:26, 660 次点击
  请教一个问题,  比如说,我首先由   malloc()函数分配了一个 100*sizeof(char)  的空间,然后我向里面写入了 50个字符,显然此时会多出 50个空间,但是我不想浪费这50个内存空间, 所以我想用 realloc() 函数重新分配空间,减去多余的50个空间, 但是我执行  ch=(char *)realloc(ch,(100-50)sizeof(char));  函数却发现空间并没有减少,还是以前的100个空间,(这里只是打个比方来说明问题的本质)。请问,如何做到把已经分配的大存储空间缩小呢???
6 回复
#2
寒风中的细雨2011-07-31 12:41
给个程序  根据结果 自己分析
程序代码:
#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;
}

#3
long3618002011-07-31 17:21
回复 2楼 寒风中的细雨
  输出结果如下所示::

只有本站会员才能查看附件,请 登录


这里仅仅显示它的基地址没变,如何反应他现在具体有多大的一块空间呢??  求解释。。。。。。。
#4
long3618002011-08-02 16:06
人呢??等了好几天呢。。。。。。。
#5
寒风中的细雨2011-08-08 21:14
只有本站会员才能查看附件,请 登录


VC++6.0   32位OS

#6
QQ3469571352011-08-09 20:47
用free,那个是扩展空间用的,你见过缩小空间用realloc的?
#7
诸葛修勤2011-08-10 22:10
加和减 区别到底在那里。。。。。。   
1