字符数组在内存中是如何存储的?

问题描述 投票:0回答:1

enter image description here我用简单的代码编写了一个cpp文件。在main函数中,我定义了一个变量:

unsigned char data[18210] = { 0x3A, 0x12, 0x12, /* ... */ };

我用18210字节初始化了它,我期望的是所有18210字节可以连续存储在某个地方或分成几个部分但仍然连续。

然后我检查了从上面的cpp文件编译的exe文件的原始数据。我发现八个字节中只记录了一个字节,其他字节看起来像序列号。

在第一张图中,我在变量数据的开头标记了一些字节,第二张图也显示了内存中存储的字节,但是这两部分的字节存储排列并不相同。 它效率不高,所以我想知道这是如何发生的,尽管它对我有用。 first picture

second picture

它效率不高,所以我想知道这是如何发生的,尽管它对我很有用。

c++ exe
1个回答
0
投票

Weijun Zhou 可能是对的。也许你的结构是以某种方式在堆栈上构建的。您可以尝试将数组标记为 static const 以确保将其放置在可以使用对象转储 objdump 工具读取的数据部分中。 此外,您还应该生成对象放置图。将“-Wl,-Map=output.map”传递给 GCC。这将生成一个映射文件,其中列出了对象符号及其地址。 如果您的结构仅出现在这里,那么您就可以在您的程序中找到它。

© www.soinside.com 2019 - 2024. All rights reserved.