C语言malloc()的使用解释和报错以及读值错误分析

最近,本大王利用C语言做数据结构时,遇到了许多与malloc相关的问题,特写此一篇来加深记忆并提醒广大初级coder。

前言:为什么使用malloc?

  • 使用malloc()的作用:

C语言的数据结构实现中,到处是malloc()的使用,一般使用如图:(不必关心注释内,看代码即可)
C语言malloc()的使用解释和报错以及读值错误分析_第1张图片
观察其中malloc这一行,
这样的做法相当于告诉了程序,我们申请了一片地址,这片地址是中存了一个特定结构体类型的数据。且目前我们拿到的是这片地址的指针,可以利用指针,对该结构体做修改。
那么,如果我们不使用malloc会怎么样?

错误1:

C语言malloc()的使用解释和报错以及读值错误分析_第2张图片
如果我们在前言中的代码中,只是声明了Mystack* st; ,那么我们使用st中的que时,程序就会报错,显示这片异常,为什么异常呢,不用malloc申请空间,这片que相当于野指针,即:程序不知道取多大的地址、取哪里的地址去队que中的rear做初始化。虽然你声明的que带有rear和front。最简单理解就是:你没有向计算机声明:你把内存中的某片地址给了que,现在的que:是野指针,就是说que地址非法,你的que地址因为没有申请过,所以可能将来会被别的一些什么变量占据。

错误2:简单,但是可能偶尔会懵逼

C语言malloc()的使用解释和报错以及读值错误分析_第3张图片
贼简单的程序出了问题,刚刚申请了n1空间,但不能做n1->val赋值,不能访问,原来只是忘记了导包:#include

错误3:(关于数值)

某些数值特别大:首先检查是否做过变量赋值。

你可能感兴趣的:(C/C++,c语言,开发语言)