问个简单的功能问题哈
我看见很多地方都是定义一个结构体,然后求出他的大小赋值给变量,那个,求一个结构体的大小有什么用呢 感觉用处很多:1、指针跨度
2、定位结构体中各元素的参考位置
3、衡量数据是否溢出结构体存储空间
zealstar 发表于 2017-1-11 12:28
感觉用处很多:
1、指针跨度
2、定位结构体中各元素的参考位置
能不能说的具体点,感觉没听懂 比如这个
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:43 编辑
不知白天和叶 发表于 2017-1-11 13:30
比如这个
typedef struct
{
额……这个我还看不懂呢,我结构体那章才看了个开头……{:10_277:}
上面的作用我都是猜测的……{:10_285:}
而且,上面这个n貌似不是结构体大小……{:10_258:} 本帖最后由 fc1735 于 2017-1-11 20:47 编辑
这是内存分配的问题,一般函数内定义的变量都是移动栈指针,在栈段中储存资料,函数返回之后栈指针回到初始位置,所以有时就需要自己另外申请一段不会随意被修改的内存空间使用,部分时候是因为栈能存放的空间有限,既然你要申请一段不会被任意修改的内存来使用,就一定要给出要申请的大小阿。 zealstar 发表于 2017-1-11 18:37
额……这个我还看不懂呢,我结构体那章才看了个开头……
上面的作用我都是猜测的……{:10 ...
哈哈开头就出来装逼~
定义结构体大小应该是为了动态创建结点吧。
创了结点输入数据还有*next指针实行单链表。 用 sizeof 就可以了 只是一个属性,放在结构体中方便使用。
一般就是为了表示这个结构体的大小,对内存分配大小上有一个表示。
页:
[1]