sizeof

用运算符sizeof可以计算出数组的容量(字节数)

char a[] = "abcd"; sizeof(a) 的值就是 5 (注意不要忘记'\0')
但是 *p = a; sizoef(p) 的值就是 根据计算机的系统, 如: 64位的就是 8 个字节,那么指针变量需要8个字节存放地址,

而不是 p 指向的区域 的内存容量, 同时任何类型的指针 sizeof 都是 8 个字节(取决于当前系统的位数和编译器)

c 语言没有办法知道指针所指向的内存容量,除非申请的时候记住它,可以采用结构体记录,而

malloc就是这样做的 malloc 开辟的空间 其实是由一个链表管理的,而每个节点是 4个指针

一个指向一块内存,
一个指向一块内存,
一个指向存放的内容
一个是存放内容的size

推荐阅读更多精彩内容

  • (JG-2014-08-20)(前半部分经过网上多篇文章对比整理)(后半部分根据ExceptionalCpp、C+...
    JasonGao阅读 5,338评论 2 23
  • 史上最全的iOS面试题及答案 iOS面试小贴士———————————————回答好下面的足够了----------...
    Style_伟阅读 2,165评论 0 35
  • iOS面试小贴士 ———————————————回答好下面的足够了------------------------...
    不言不爱阅读 1,711评论 0 7
  • ———————————————回答好下面的足够了---------------------------------...
    恒爱DE问候阅读 1,511评论 0 4
  • 一年一度浪~的情人节马上就要到了,每年情人节都是约会,送礼物这些浪漫的套路。However,今年Fake姐觉得是时...
    Fake姐阅读 438评论 0 1