此代码是否有效 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/