鱼C论坛

 找回密码
 立即注册
查看: 2909|回复: 2

[技术交流] malloc申请的空间大小计算

[复制链接]
发表于 2015-4-29 18:45:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 myqicq 于 2015-4-29 21:06 编辑

看了论坛的一个帖子,自己敲了下代码,有些疑惑!
printf("这是malloc执行后*p的长度=%d\n", (num * sizeof(**p)));//这里num * sizeof(**p)是否等于实际申请到的空间
没人鸟......

代码如下
#include <stdio.h>
#include <string.h>
#include <malloc.h>

void GetMemory(char **p, long num){
        printf("这是Test函数传给GetMemory函数里p的地址=%#X\n", p);   //理解 **p 是一个什么东西,有什么作用
        printf("这是malloc执行前*p的值=%s\n", *p);  //理解 *p 又是一个什么东西,其作用是什么
        printf("这是*p的长度=%d\n", sizeof(**p));
        *p = (char*)malloc(num * sizeof(**p));   //申请num所指定大小的内存空间
        printf("这是malloc执行后*p的长度=%d\n", (num * sizeof(**p)));
        printf("这是malloc执行后*p的值=%s\n", *p);   
}

void Test(void){
        char *str = NULL;       //申明一个char*空指针变量str
        printf("这是调用GetMemory前str指向空间的值=%s\n", str);
        printf("这是Test函数str的地址=%#X\n", &str);
        GetMemory(&str, 100);   //传str的地址给getmemory函数,在getmemory函数为str申请一块指定长度的内存空间
        printf("这是调用GetMemory后str指向空间的值=%s\n", str);  
        strcpy(str, "hello");   //把字符串"hello"复制到str所指向的空间
        printf("这是strcpy执行之后str指向空间的值=%s\n", str);
        printf("%s\n", str);    //打印str所指向的空间里的内容
        printf("str size=%d\n", strlen(str));
        free(str);
}

void main(void)
{
        Test();
        system("pause");
}



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-4-29 21:07:17 | 显示全部楼层
没人鸟我。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-3 22:16:12 | 显示全部楼层
**p是指向指针的指针  也是有类型的 你要看他的指向
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 11:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表