1. int i =10; // i和10分别存在堆还是栈中?2. string str = “a”; //str 和 "a" 分别存在堆还是栈中?
谢谢!

解决方案 »

  1.   

    运行时
    1: i不存在了,10位于栈中2: str 位于栈中(存放地址), "a"位于堆中.
      

  2.   

    我说的是代码在编译后的内存情况,
    在源代码中,你仍可以随时调用i,只要i仍在作用域内(同一个函数中)运行时,源代码被编译成了二进制,分为程序段和数据段,i被映射成了一个相对地址,直接包含在程序段中,
    这个相对地址指向的就是栈中的那个四个字节的内存,里面存放的是10.