动态数组用一级指针还是二级指针?
Posted coding码场
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态数组用一级指针还是二级指针?相关的知识,希望对你有一定的参考价值。
在实际开发中,经常遇到要存储一些对象,比如添加一些任务,然后一次性提交给硬件去执行。在使用中,每次添加的任务数又是不大一样的,那么我们怎么存储好任务数据呢?
假设我们有一个结构体如下:
typedef struct _JOB_S
TR_BOOL bValid;
Job_WROK_TYPE_CLASS_E enJobWorkTypeClass;
TASK_ATTR_S stTaskAttr;
TR_S32 s32TotalNum;
TR_U8 u8ArrayValidNum;
TR_U8 u8ArrayTotalNum;
JOB_Task_S *pJobTask;
V_JOB_S;
pJobTask我们到底用一级指针,还是用二级指针?区别:
一级指针:好处,你要存储多少个成员就申请多少个NODE空间,后面再要添加的时候,就采用remalloc的方式来解决。操作数据方便,查找方便效率高。
弊端:需要连续的空间,如果需要大块大块的,可能有remalloc失败的风险。
二级指针:好处:可以利用一些零碎一点的空间,不需要很大的一块连续空间;
弊端:操作麻烦,查找效率不高,要先申请存放指针的空间,然后再去申请NODE的空间,相对麻烦一些。
那我们怎么采用呢?
我的建议,在买个NODE内存单元不大的情况下,采用一级指针更好一些。如果想图像块一样的大内存,就采用二级指针灵活一些。
以上是关于动态数组用一级指针还是二级指针?的主要内容,如果未能解决你的问题,请参考以下文章