c - ansi c 意外行为有问题吗?

标签 c stack-overflow buffer-overflow

我遇到了意想不到的行为;这是问题定义:

我有一些应用程序通过 UDP 协议(protocol)在 LAN 上进行通信。我正在从文本文件中读取 IP 地址和端口号。最初,IP 地址和端口号工作正常,但一段时间后,存储在 char 数组中的 IP 地址被损坏,并且采用垃圾值。另外,文件写入也受此影响。我的意思是 IP 数组中的值也写入由同一应用程序写入的文本文件中。我不明白问题出在哪里 - 你能帮忙吗?

最佳答案

这几乎肯定意味着您有缓冲区溢出 - 甚至可能是堆栈溢出。您可能将太多字节读入太小的字节数组中,并且超出了分配空间的末尾并践踏了其他数据(例如 IP 地址)。

如果您使用的是 Linux,请考虑使用 valgrind帮助诊断问题。

关于c - ansi c 意外行为有问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2995259/

相关文章:

c++ - 程序返回值 -1073741571 而不是永远

c++ - C++ 中的字符串溢出?这种持续不断的哔哔声很奇怪

c++ - 为什么在访问整数时缓冲区溢出会导致段错误?

C - 子进程的子进程

c - 为什么 _mm_stream_ps 会产生 L1/LL 缓存未命中?

performance - Scala递归与循环: performance and runtime considerations

rust - 在 Rust 中调试堆栈溢出是否有任何标准方法?

c - 我的代码是否足以防止溢出?

c - 接收两个矩阵的元素后出现分割错误

c - 如何在C中将图像旋转90度