不知白天和叶 发表于 2017-1-11 12:09:20

问个简单的功能问题哈

我看见很多地方都是定义一个结构体,然后求出他的大小赋值给变量,那个,求一个结构体的大小有什么用呢

zealstar 发表于 2017-1-11 12:28:46

感觉用处很多:
1、指针跨度
2、定位结构体中各元素的参考位置
3、衡量数据是否溢出结构体存储空间

不知白天和叶 发表于 2017-1-11 13:27:15

zealstar 发表于 2017-1-11 12:28
感觉用处很多:
1、指针跨度
2、定位结构体中各元素的参考位置


能不能说的具体点,感觉没听懂

不知白天和叶 发表于 2017-1-11 13:30:35

比如这个
typedef struct
{
    int startcodeprefix_len;      //! 4 for parameter sets and first slice in picture, 3 for everything else (suggested)
    unsigned len;               //! Length of the NAL unit (Excluding the start code, which does not belong to the NALU)
    unsigned max_size;            //! Nal Unit Buffer size
    int forbidden_bit;            //! should be always FALSE
    int nal_reference_idc;      //! NALU_PRIORITY_xxxx
    int nal_unit_type;            //! NALU_TYPE_xxxx      
    char *buf;                  //! contains the first byte followed by the EBSP
} NALU_t;




n = (NALU_t*)calloc (1, sizeof (NALU_t));
    if (n == NULL){
      printf("Alloc NALU Error\n");
      return 0;
    }

    n->max_size=buffersize;
    n->buf = (char*)calloc (buffersize, sizeof (char));
    if (n->buf == NULL){
      free (n);
      printf ("AllocNALU: n->buf");
      return 0;
    }

zealstar 发表于 2017-1-11 18:37:09

本帖最后由 zealstar 于 2017-1-11 18:43 编辑

不知白天和叶 发表于 2017-1-11 13:30
比如这个
typedef struct
{


额……这个我还看不懂呢,我结构体那章才看了个开头……{:10_277:}

上面的作用我都是猜测的……{:10_285:}

而且,上面这个n貌似不是结构体大小……{:10_258:}

fc1735 发表于 2017-1-11 20:45:44

本帖最后由 fc1735 于 2017-1-11 20:47 编辑

这是内存分配的问题,一般函数内定义的变量都是移动栈指针,在栈段中储存资料,函数返回之后栈指针回到初始位置,所以有时就需要自己另外申请一段不会随意被修改的内存空间使用,部分时候是因为栈能存放的空间有限,既然你要申请一段不会被任意修改的内存来使用,就一定要给出要申请的大小阿。

auyhin丶 发表于 2017-1-11 22:10:46

zealstar 发表于 2017-1-11 18:37
额……这个我还看不懂呢,我结构体那章才看了个开头……

上面的作用我都是猜测的……{:10 ...

哈哈开头就出来装逼~

定义结构体大小应该是为了动态创建结点吧。
创了结点输入数据还有*next指针实行单链表。

qq1242009750 发表于 2017-1-26 17:09:35

用 sizeof 就可以了

mhp0114 发表于 2017-2-4 14:25:37

只是一个属性,放在结构体中方便使用。
一般就是为了表示这个结构体的大小,对内存分配大小上有一个表示。
页: [1]
查看完整版本: 问个简单的功能问题哈