C语言内存分配的方式
malloc
malloc在哪申请内存分配
动态存储区
malloc如何释放分配的内存
通过free()函数
如果防止内存泄漏(内存泄漏的场景)
- 内存分配未成功,就开始使用
解决办法是在使用内存之前检查指针是否为空。
如果*p是函数的一个参数,那么在函数的入口处用assert(p!=NULL),(头文件是assert.h)进行检查
如果是用malloc或new来申请内存,应该用if(p!==NULL)来进行防错处理 - 内存分配成功,但是尚未初始化就开始使用
两个原因:一是没有初始化的概念,二是误认为内存的缺省初值全为0,导致引用初值错误(数组) - 内存分配成功并且已经初始化,但内存越界
- 忘记释放内存,造成内存泄漏
含有这种错误的函数每被调用一次就会丢失一块内存
频繁释放内存会导致什么
可能会导致内存申请不成功,或者释放不成功,进而造成内存泄漏
const使用场景
可以用来修饰变量,数组,结构体
作用是以const关键字声明的对象,其值不能通过赋值或递增,递减来修改
数组和链表的区别
数组:查询简单,增删困难,查询时时间复杂度是O(1),需要提前确认大小
链表:增删简单,查询困难,查询时时间复杂度是O(n),不需要提前确认大小
栈和队列的区别
栈:先进后出,插入和删除元素时从栈顶开始
队列:先进先出,插入时从尾部插入,删除时从头部开始
如何用两个栈组成一个链表
参考:https://blog.csdn.net/dangzhangjing97/article/details/81477192
关于C语言内存对齐的问题
都知道哪些抓包工具
参考: https://blog.csdn.net/gufenchen/article/details/90895856
如何查看Linux内存
free -m