Paz*_*Paz 1 c memory-management
假设我正在编写一个C程序,它具有:
int a = 1;
int b = 5;
int *p = &a;
Run Code Online (Sandbox Code Playgroud)
将:
int k = *(p+1);
Run Code Online (Sandbox Code Playgroud)
总是给k = 5
?
形式上:
这个变量'地址的"连续"属性是否依赖于堆栈实现?如果没有,是否有保证(例如&a < &b < &p
)?
(这个在ubuntu上使用gcc的简单测试给出了k=5
,但涉及不同类型的其他测试不起作用)
不...... 虽然它可能会出现在大多数平台上但绝对不能保证你的代码会产生5.你所拥有的是未定义的行为,这可能会导致程序崩溃.永远不要依赖未定义的行为,完全停止.
归档时间: |
|
查看次数: |
129 次 |
最近记录: |