顺序表实现动态分配
#include <stdlib.h> #define InitSize 10 //默认最大长度 typedef struct{ int *data; //顺序表的起始地址 int maxsize;//最大容量 int length;//当前长度 }SeqList; //初始化顺序表 void InitList(SeqList &L) { L.data=(int*)malloc(InitSize*sizeof(int))//动态申请内存空间 L.length=0;//初始长度为0 L.maxsize=10; //赋初始值 for(int i=0;i<L.maxsize;i++) { L.data[i]=i; } } //增加动态数组的长度 void IncreaseSize(SeqList &L,int len) { int *p=L.data; L.data=(int *)malloc(sizeof(int)*(L.maxsize+len)); for(int i=0;i<L.length;i++) { L.data[i]=p[i]; } L.maxsize=L.maxsize+len; free(p);//销毁内存空间 } int main() { SeqList L; InitList(L); IncreaseSize(L,5); return 0; }
malloc()申请空间除了申请指定内存空间外,还在指针头部以前增加存放额外空间用于存放申请空间大小信息
free()销毁内存传入malloc申请空间的首地址,除传入malloc申请的空间外,还额外传入指针头部以前的值用于辨别需要销毁空间的大小,该指针头也被销毁。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)