分类: 开发

1 篇文章

C语言基础:指针偏置,记录一次低级错误
最近写项目碰到了一些成员特别多的结构体,里面的各个成员指针都要申请内存,然后又要管理释放,比较常用的做法:直接一起申请一大块,就像struct* A = malloc(size_struct_A + size_member_A.x + size_member_A.y...),然后将成员指针偏置过去。这样最后就只要释放一处就行了,不会让代码显得很臃肿。 内存越界 这样写确实最后释放简洁了很多,但由于我的误操作,最后检查出有内存越界,指针越界访问了没有申请的内存。 也就是说我的成员指针并没有成功偏置到我申请的那一大块内存上。遂查看成员指针偏置的部分,发现我是这么写的,简化下类似以下 typedef…