未序列化的自动变量的值
Value of unintialized automatic variables
我有这个代码:
int a,b;
int* aPtr = &a;
int* bPtr = &b;
std::cout << "a: " << *aPtr << std::endl;
std::cout << "b: " << *bPtr << std::endl;
当我不给a/b:赋值时
*aPtr的值是CCD_ 1&*bPtr的值是CCD_ 2。
为什么会这样?
如果不为变量a and b
赋值,则它是未定义的行为。因此,您可以期望任何垃圾值。指针显示变量的地址,当你说int a
时,意味着你正在为变量a
分配一些内存。因此,您需要初始化变量a
,否则会导致未定义的行为。当您打印结果时,它将显示任何垃圾值。
与其他使用0初始化的语言不同,C++中没有整数的默认初始化值。在您的情况下,指针只指向某个内存位置,而值反映了该位置中的任何内容,这些内容可能会根据过多的因素而变化。
指针是一种显示内存中变量地址的工具,而不是变量本身。int a
意味着您保留了一些内存(可以用以前程序中的其他内容填充)。因此,您必须事先对a
进行初始化(给出一个起始值)。
a
和1984125892
0包含在堆栈中。如果不为它们分配任何值,它们将只具有在为其分配/保留空间时堆栈中的值。这根本与指针有关。
相关文章:
- 如何在C++中序列化结构数据
- 序列化,没有库的整数,得到奇怪的结果
- 如何知道QDataStream不能反序列化某些内容
- 如何使用Python从C++中读取谷物序列化数据
- 如何使用boost::具有嵌套结构和最小代码更改的序列化
- 带有Protobuf序列化的C++Hazelcast:字符串不是UTF-8格式的
- 自定义对象的dlib序列化在gcc中失败
- C++boost序列化多态性问题
- 增强基于 XML class_id的反序列化
- 为什么C++有不同的变量初始化方式?
- 提升反序列化对象具有 nan 或 -nan 值
- 提升::序列化警告未使用的变量file_version
- 我在处理序列化时是否应该硬码变量大小?C
- 未序列化的自动变量的值
- 在使用 boost::序列化时,是否应该序列化没有成员变量的基本对象
- Boost mpl::list变量序列化check_const_loading()编译错误
- 使用谷物序列化:只读第一个变量
- 如何序列化 <boost::shared_ptr<void *>> 类型的列表变量
- std::list类型可变变量的boost序列化不起作用
- 处理从boost序列化中删除的变量