c - C 中的越界内存位置

标签 c memory

此代码是否有效 C:

fputc(*("Checking 7 bytes before this string"-7), stdout);

C 标准中是否有任何内容反对这样做?即在字符串文字之前读取几个字节。这个怎么样:(假设这些位置对于进程来说确实存在)

for (i=(char *)0x400000; i<(char *)0x400800; ++i) fputc(*i, stdout);

如果这些是有效的,C 中是否有任何限制内存位置?

谢谢。

最佳答案

第一个将导致未定义的行为,因为您超出了字符串文字的边界(下溢)

第二个示例也是未定义的,因为您访问的地址不能保证可以访问,甚至不存在。

越界内存位置不是 C 的,而是操作系统和编译器的。

关于c - C 中的越界内存位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9961732/

相关文章:

c - 无法在eclipse juno中编译C

ios - 在 Swift 中使用 C 文件导致链接器错误

c - 基本动态内存和数组指针

c++ - 堆栈中的内存错误

c - 如何找到 malloc 调用实际使用了多少内存?

c - 添加第三个维度和 z 轴旋转后对象未渲染

c - 为什么会出现段错误+如何消除它?

c - Postgresql用户定义的c函数问题

c++ - malloc 小于 8 字节

c++ - fork 后内存损坏