• 注册 / 登录
  • 切换到窄版
  • 查看: 1670|回复: 0

    C程序中与内存有关的常见错误

    [复制链接]

    668

    主题

    682

    帖子

    6599

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    6599
    发表于 2023-4-4 11:45:35 | 显示全部楼层 |阅读模式

    路线栈欢迎您!

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    引言

    聊聊C程序中与内存有关的常见错误。与内存有关的错误,最让人感到头疼,有时候程序出错很随机,需要排查好久才能找到。

    所以,我们应该尽量避免与内存有关的错误,下边列举几种错误,供你参考。

    1.间接引用坏指针

    如果间接引用一个指向没有任何意义的数据的指针,那么操作系统会以段异常终止程序。如果向只读区域中写入数据,这些区域会以保护异常终止这个程序。

    2.读未初始化的内存

    常见的错误是假设堆内存被初始化为零。

    3.栈缓冲区溢出

    如果一个程序不检查输入字符串的大小就写入栈中目标缓冲区,那么这个程序就会出现缓冲区溢出的错误

    4.假设指针和它们指向的对象大小相同

    常见的错误是,假设指向对象的指针和它们所指向的对象是相同大小的。

    5.内存越界

    这种错误会越界覆盖原有内存的数据,导致出错。

    6.引用指针,而不是它所指向的对象

    如果不太注意 C 操作符的优先级和结合性,我们就会错误地操作指针,而不是指针所指向的对象。若对优先级和结合性有疑问的时候,就用括号。

    7.误解指针运算

    这类错误是忘记指针的算术运算操作是如何进行。是以指针指向的对象的大小为单位进行的,而这种大小单位并不一定是字节。

    8.误解指针运算

    这类错误是忘记指针的算术运算操作是如何进行。是以指针指向的对象的大小为单位进行的,而这种大小单位并不一定是字节。

    9.引用空闲堆块中的数据

    引用已经被释放了的堆块中的数据会导致出错。

    10.引起内存泄漏

    内存泄漏是缓慢、隐形的杀手,当程序员不小心忘记释放已分配的内存块,则会引起内存泄漏。

    以上总结了 C 程序中,管理和使用内存常见的错误类型。在实际的编程中,应该避免出现这些错误,否则会出现意想不到的后果。

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|路丝栈 ( 粤ICP备2021053448号 )

    GMT+8, 2024-11-3 21:00 , Processed in 0.039561 second(s), 18 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表