G++;编译器目标代码:为什么为数据变量分配0的内存地址 我尝试用下面的Linux命令编译我的简单C++源代码 $g++-cfoo.cpp生成一个对象文件。我意识到我创建的所有宏变量都被分配了一个0的内存地址。这背后的原因是什么?为什么汇编程序不给变量分配适当的内存量呢
编辑: 以下是我使用的代码: $g++-c-g string.cpp $objdump-dS string.o>string.o.textG++;编译器目标代码:为什么为数据变量分配0的内存地址 我尝试用下面的Linux命令编译我的简单C++源代码 $g++-cfoo.cpp生成一个对象文件。我意识到我创建的所有宏变量都被分配了一个0的内存地址。这背后的原因是什么?为什么汇编程序不给变量分配适当的内存量呢,c++,memory,memory-management,compiler-construction,g++,C++,Memory,Memory Management,Compiler Construction,G++,编辑: 以下是我使用的代码: $g++-c-g string.cpp $objdump-dS string.o>string.o.text 以下是我的简单C++代码: #include <iostream> #define STRING "string\n" using namespace std; int main() { int count = 3; for (int i = 0; i < count; i++)
以下是我的简单C++代码:
#include <iostream>
#define STRING "string\n"
using namespace std;
int main() {
int count = 3;
for (int i = 0; i < count; i++)
cout<< STRING;
return 0;
}
#包括
#定义字符串“STRING\n”
使用名称空间std;
int main(){
整数计数=3;
for(int i=0;i cout程序集列表中的0只是一个占位符。链接器将填充更多地址(通常是从数据段开始的偏移量),然后加载程序将使用图像加载到的地址调整这些偏移量。显示代码和汇编程序输出。欢迎这样做,请阅读并提供这几乎肯定不是正在发生的事情。0是函数的地址,而不是参数的地址。由于函数未在此翻译单元中定义,因此需要我后来补上了。