当数组定义为:
char a[256<<1];
char b[256<<1];
有人能理解为什么当a在b之前定义时代码会工作,而当a在b之后定义时代码不会工作的原因吗?好像这样不行:
char b[256<<1];
char a[256<<1];
...other code with a and b;
最佳答案
我没有立即看到原因,因为没有上下文。可能如果数组所属的某个结构正在通过指针算法访问,那么是的,我可以看到发生这种情况的原因,或者只是指针算法,通常假定a和b的顺序。否则,我看不出这会导致失败的原因。如果你能提供有帮助的上下文。
重新排列可能会在代码中的某个地方显示缓冲区溢出(可能a之前刚刚溢出到b中,但现在由于这个新的顺序,a溢出到其他一些堆栈变量中,并使奇怪的事情发生)。如果您使用不安全的调用(如get for line,其长度超过512个字符或类似的内容),这是很常见的。
而FYI<
关于c - 用C中的<<(更少)创建char数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8502060/