简单的问题 大家都知道一个字符串 比如“hello”是存储在静态存储区的 也有人说是放在“文字常量区” 反正不同的人对windows内存管理的理解也不同 反正“hello”的生命周期是和程序的生命周期一样的 那么:大家又知道 char s【】 = “hello”; 这是系统会从hello这个字符串拷贝一份来给s数组 那么
int a = 1;
这个数字1又是存放在哪里的呢?

解决方案 »

  1.   


    何为立即数 生命周期如何 “hello”这个字符串呢 也算是立即数么
      

  2.   

    何为立即数 生命周期如何 “hello”这个字符串呢 也算是立即数么
      

  3.   

    代码区常量区全局区栈堆
    你要分清比如:int a=1;  a在栈中,a是个变量,它保存的值为1,但是 代码中也有个1
      

  4.   

    static类型的对象存在静态存储区,静态存储区是在全局区吧
      

  5.   

    LPWSTR p = L"hello" "hello"在数据区
    int a = 1. 这个1直接写在代码区的.
    mov a,1 : 1是占整条指令内存的,紧跟在a的后面.
      

  6.   


    立即数就是字面常量,
    mov memory,{ address | literal value }
    指令要把一个值复制到另个地方,要么复制地址,要么复制字面值.
    WIN32下,地址和值最多都是4个字节.大块内存用4个字节地址值引用,但字面常量本身用4个字节就可以表示,没必要把1先放在数据区,然后把1的地址在放在指令内存中.而这里的1在指令中用一个字节就够了,用地址指令反尔会更胖.