| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2171 人关注过本帖
标题:realloc 和 malloc 函数分配内存
取消只看楼主 加入收藏
yuantkong
Rank: 2
等 级:论坛游民
威 望:3
帖 子:82
专家分:86
注 册:2016-5-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
realloc 和 malloc 函数分配内存

理论上如果 realloc 分配的内存比 malloc原本分配的内存大就会替代.

VS编译器 但是测试的程序 ,

p=(int*)malloc(sizeof(int));  //分配 1个int 内存
p=(int*)realloc(p,3*sizeof(int); //分配3个int 内存

只要 realloc 里分配的int 内存个数不超过3个, 它的地址就给 malloc 分配一个int 内存的地址是一样的

书上是显示不一样. 是因为编译器原因还是什么?
搜索更多相关主题的帖子: 编译器 
2016-06-04 10:19
yuantkong
Rank: 2
等 级:论坛游民
威 望:3
帖 子:82
专家分:86
注 册:2016-5-17
收藏
得分:0 
回复 4楼 吹水佬

不确定。

试着realloc 的时候 只要m <=3 ,它返回的首地址就会跟 malloc 分配一个int 内存的首地址一致


#include "stdafx.h"
#include "stdlib.h"

int main()
{
    int *p = NULL;                        //初始化

    p = (int *)malloc(sizeof(int)); // 用malloc 给p 分配 内存
   
    if (NULL == p)
    {
        printf("error.\n");
        return -1;
    }
    *p =4;
    printf("p=%p\n", p);
    printf("*p=%d\n", *p);

    p = (int *)realloc(p, sizeof(int));  //用realloc 给 p 分配内存
   
    if (NULL == p)
    {
        printf("error.\n");
        return -1;
    }
    printf("p=%p\n", p);
    printf("*p=%d\n", *p);
   
    p = (int *)realloc(p, 3 * sizeof(int));  //为p分配 3 个 int 内存空间
   
    if (NULL == p)
    {
        printf("error.\n");
        return -1;
    }
    printf("p=%p\n", p);
    printf("*p=%d\n", *p);

    realloc(p, 0);
    p = NULL;
   

    printf("sizeof(int)=%d \n", sizeof(int));
    printf("3*sizeof(int)=%d \n", 3* sizeof(int));
    return 0;
}
2016-06-06 22:10
快速回复:realloc 和 malloc 函数分配内存
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016656 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved