标题:未初始化变量的赋值问题
只看楼主
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
结帖率:79.17%
 问题点数:0 回复次数:2 
未初始化变量的赋值问题
#include <stdio.h>
  
int main()
{
    int i;
    int p;
    printf("0x%08x\n",i);
    return 0;
}
使用上面的代码测试,在 DEBUG  模式下 ,我的机子始终输出的是 0xcccccccc ,而 release模式下为0X004070b8

在网上找了好久,终于找到  DEBUG  模式下未初始化变量赋值为 0xcccccccc的原因是:
在内存中,0xcccccccc就是int 3,对应的中断号3,也就是单步中断。这样有利于VC进行单步调式

但是一直找不到  release模式下为0X004070b8  的原因。
当然可能这只是个随机值,只是我重新编译了很多次,始终是这个值,希望大家帮忙编译确认下是不是就是这个确定值,还是一个随机值。如果是确定值的化,我相信这背后一定也由原因
搜索更多相关主题的帖子: release 模式 DEBUG 0xcccccccc 0X004070b8 
2008-11-02 14:56
nwpu063417
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:428
专家分:28
注 册:2007-5-11
得分:0 
在内存中,0xcccccccc就是int 3,对应的中断号3,也就是单步中断。这样有利于VC进行单步调式

请问0xcccccccc是3吗?我觉的它首先一定是负数
我觉得没有初始化的指针值应该和编译器有关
我在VC2005下运行报错运行时错误:

在MinGW(GCC)下两种模式都是0x00000000

[[it] 本帖最后由 nwpu063417 于 2008-11-2 15:33 编辑 [/it]]

1.JPG (30.97 KB)

2008-11-02 15:32
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
得分:0 
回复 2# 的帖子
0xcccccccc是中断号3的中断地址(不是PC机的中断号,是VC编译器的中断号),
而不是说是整数型 3 的十六进制表示
我使用的是 VC6
不同编译器对于 这些未初始化变量的 具体操作存在差异是很正常的

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2008-11-02 17:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-241997-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.213140 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved