数据结构___malloc与free的合理运用

本文探讨了编程中常见的段错误,详细解释了其产生的原因——访问非法内存地址。通过虚拟内存空间的视角,阐述了malloc与free在内存管理中的角色,强调了正确使用内存分配与释放的重要性。同时,提到了栈和堆的区别,并给出了一个使用malloc分配和释放内存的示例。此外,博主分享了自己作为即将步入互联网行业的新人的学习历程,为读者呈现了一个程序员成长的日常。
摘要由CSDN通过智能技术生成

概要

最近经常感受被 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小伙

下一站(javascript)
下一站(html)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值