考研论坛

 
查看: 1406|回复: 1
打印 上一主题 下一主题

动态分配内存的两个函数.

[复制链接]

7

主题

184

帖子

643

积分

中级战友

Rank: 3Rank: 3

精华
0
威望
50
K币
593 元
注册时间
2017-2-21
跳转到指定楼层
楼主
发表于 2018-3-20 19:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 总有爱妃想睡朕 于 2018-3-21 20:28 编辑

//带返回值的函数,运行正确.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char* malloc_func(char* p)
{
        p = (char*)malloc(10 * sizeof(char));
        memset(p, 0, 10 * sizeof(char));
        strcpy(p,"abcdefghi");
        return p;
}

int main(void)
{
        char* p = NULL;
        p = malloc_func(p);
        printf("p=%p\n", p);
        printf("p =%s\n", p);
        free(p);
        return 0;
}

//二级指针分配动态内存.运行正确.
//传入的是一级指针的地址.参数修改的是一级指针的内存.内存是可以修改的.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void malloc_func(char** p)
{
        *p = (char*)malloc(10 * sizeof(char));
         memset(*p, 0, 10 * sizeof(char));
         strcpy(p,"abcdefghi");
}

int main(void)
{
        char* p = NULL;
        malloc_func(&p);
        printf("p=%p\n", p);
        printf("p =%s\n", p);
        free(p);
        return 0;
}


总之,正确返回分配的内存,1)返回内存指针,2)用高一级的指针把低一级的指针传出来.
    回复

    使用道具 举报

    7

    主题

    184

    帖子

    643

    积分

    中级战友

    Rank: 3Rank: 3

    精华
    0
    威望
    50
    K币
    593 元
    注册时间
    2017-2-21
    沙发
    发表于 2018-3-20 19:41 | 只看该作者
    本帖最后由 总有爱妃想睡朕 于 2018-3-21 12:00 编辑

    留个笔记.
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册 人人连接登陆

    本版积分规则   

    关闭

    您还剩5次免费下载资料的机会哦~

    扫描二维码下载资料

    使用手机端考研帮,进入扫一扫
    在“我”中打开扫一扫,
    扫描二维码下载资料

    关于我们|商务合作|小黑屋|手机版|联系我们|服务条款|隐私保护|帮学堂| 网站地图|院校地图|漏洞提交|考研帮

    GMT+8, 2025-12-9 01:54 , Processed in 0.066252 second(s), Total 10, Slave 10(Usage:6.5M, Links:[2]1,1_1) queries , Redis On.

    Powered by Discuz!

    © 2001-2017 考研 Inc.

    快速回复 返回顶部 返回列表
    × 关闭