概要
最近经常感受被 Segmentation fault (core dumped)支配的恐惧,故就对此进行查询,以自己的了解来谈谈令我害怕的段错误
声明:因个人能力有限,本文仅是个人的学习记录笔记,有错误之处还望指出
要知道这个错误的名称:段错误,发生这种错误的主要原因是因为访问了错误的内存地址,或者内存地址未初始化。
我们可以通过虚拟内存空间来更深层次的了解什么要对内存地址初始化
- 我们利用malloc 其本质是调用底层的sbrk函数实现,返回一个void *类型的指针,是该元素的首地址 分配的空间是在heap(堆)从下往上来分配内存的,因为heap是大空间,所以可以分配较多的内存
- 与int,char这种栈中分配的数据不同,他们可以在程序执行完或者使用完由计算机主动回收,但是malloc分配的就不一样,需要用户在使用完后调用free函数释放内存,不然容易造成内存泄漏。
- 所以在使用有关自定义结构的时候要注意合理的使用malloc和free
例如:给int类型的数组分配10个数据的长度
int *p;
p=(int *)malloc(sizeof(int)*10);
//使用完后
free(p);
栈和队列的基本概念和实现
而塞过 2021-3-29
关于我:一个就要进入互联网,经历社会毒打的99小伙