本期话题
(资料图片仅供参考)
聊一聊
与内存有关的错误,最让人感到头疼,有时候程序出错很随机,需要排查好久才能找到。
所以,我们应该尽量避免与内存有关的错误,下边列举几种错误,供你参考。
(1)间接引用坏指针
如果间接引用一个指向没有任何意义的数据的指针,那么操作系统会以段异常终止程序。如果向只读区域中写入数据,这些区域会以保护异常终止这个程序。
(2)读未初始化的内存
常见的错误是假设堆内存被初始化为零。
(3)栈缓冲区溢出
如果一个程序不检查输入字符串的大小就写入栈中目标缓冲区,那么这个程序就会出现缓冲区溢出的错误
(4)假设指针和它们指向的对象大小相同
常见的错误是,假设指向对象的指针和它们所指向的对象是相同大小的。
(5)内存越界
这种错误会越界覆盖原有内存的数据,导致出错。
(6)引用指针,而不是它所指向的对象
如果不太注意 C 操作符的优先级和结合性,我们就会错误地操作指针,而不是指针所指向的对象。若对优先级和结合性有疑问的时候,就用括号。
(7)误解指针运算
这类错误是忘记指针的算术运算操作是如何进行。是以指针指向的对象的大小为单位进行的,而这种大小单位并不一定是字节。
(8)误解指针运算
这类错误是忘记指针的算术运算操作是如何进行。是以指针指向的对象的大小为单位进行的,而这种大小单位并不一定是字节。
(9)引用空闲堆块中的数据
引用已经被释放了的堆块中的数据会导致出错。
(10)引起内存泄漏
内存泄漏是缓慢、隐形的杀手,当程序员不小心忘记释放已分配的内存块,则会引起内存泄漏。
以上总结了 C 程序中,管理和使用内存常见的错误类型。在实际的编程中,应该避免出现这些错误,否则会出现意想不到的后果。
觉得文章不错,点击“分享”、“赞”、“在看” 呗!
关键词:
扫描关注一起学嵌入式,一起学习,一起成长【一分钟聊嵌入式】,力求精简,争取用一分钟左右的时间读完。每篇文章讨论一个嵌入式相关的话题,
2023年2月能源大宗商品沥青价格为3890 9元 吨,同比增加9 81%,环比下降1 34%;从2月周一至周五大宗商品沥青价格来看,价格在3840 86-3953 71
未来几天,我国总体维持北晴南雨的天气格局。今天(3月27日),南方大部降雨较弱;明后天,新一轮降水发展,江南中南部、华南等地的部分地区有