Rya*_*ela 23
当指针被滥用时可能出错的事情:
内存泄漏 - 您在方法中分配一个指针,然后让它超出范围而不正确地释放它.现在,指向堆上内存的指针已丢失,但内存仍保持分配状态.释放这种记忆现在非常困难.来自维基百科的更多信息.
访问冲突 - 您创建一个指向您无权访问或不存在的内存地址的指针.指针只是整数,可以像任何其他数字一样操纵.当您尝试取消引用无效指针时,程序将暂停.来自维基百科的更多信息.
空指针错误 - 这是访问冲突的特例."停放"指针的正确方法是将其值设置为零或null,以使其不指向任何特定的位置.尝试取消引用空指针将停止您的程序.来自维基百科的更多信息.
缓冲区溢出 - 为30个字符的字符缓冲区分配指针.然后,您继续将用户输入(从套接字,文件,控制台等)流入此缓冲区.如果未能正确实现缓冲区边界检查,则程序可能会将超过30个字符放入缓冲区.这将破坏存储器中缓冲区附近存储的所有数据,并可能使您遭受恶意代码攻击.来自维基百科的更多信息.
内存损坏 - 指针只是一个整数,包含它指向的内存地址.作为一个整数,指针算术可用于以各种有趣的方式操纵指针的值.如果指针计算出错,可能会产生细微的错误.指针现在将指向内存中的某个未知位置,并且在取消引用时可能会发生任何事情.
以空值终止的字符串问题 - 当期望以null结尾的字符串的字符串库函数被送入非空终止的字符指针时,会发生这些错误.字符串库函数将继续一次处理一个字符,直到找到null为止 - 无论在哪里.一个笑话最能说明这个错误.