热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

c/c++开发分享malloc分配的指针大小

char*pointer;pointermalloc(20000);printf(%d,sizeof(pointer));output:8因为我使用malloc预留了20000
char* pointer; pointer = malloc (20000); printf("%d", sizeof(pointer)); //output: 8 

因为我使用malloc预留了20000个字节,所以我期待输出20000。 但是,它返回8.为什么会发生这种情况?

    你必须使用64位系统/操作系统,这就是为什么它为printf打印8(“%d”,sizeof(指针));

    当你宣布char * p; 它将在你的记忆中保留等于sizeof(char *)的空间。

    现在,如果系统是64位,它将保留8个字节,或者如果它是32位,那么它将保留4个字节。

    现在

     char* pointer; pointer = malloc (20000); 

    当你定义pointer = malloc(20000)时,它将在内存中保留一个20000字节的块,其中指针指向该块的第一个字节,它不会向指针分配20000个字节。

    sizeof返回传递给它的类型的大小。
    类型是char * ,它只指向大小为20000的内存位置。

    sizeof是一个编译sizeof算符。 它只知道指针的大小(这里是8个字节),而不是它指向的大小。 sizeof在运行时不存在。

    sizeof给出指针变量的大小,而不是它指向的区域的大小。

      以上就是c/c++开发分享malloc分配的指针大小相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(编程笔记)。


      推荐阅读
      author-avatar
      是个success
      这个家伙很懒,什么也没留下!
      PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
      Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有