c++程序编译完生成exe,以后exe运行还跟编译器有关吗

解决方案 »

  1.   

    那么关于编译器给一些对象分配内存是怎么回事?如果是编译时分配,那么与运行就没有关系了,这部分分配的内存一直在计算机内存里?
    如果是运行时编译器给对象分配那么exe程序不就是根编译器有关?
      

  2.   

    操作系统怎么知道要分配的是静态还是动态,内存区的划分与编译器的不同是不同的,程序既然已经生成了exe,既然与编译器无关了,操作系统如何知道程序运行时怎么来分?
      

  3.   

    静态也是要程序运行后才能分配阿!
    但是静态的地址是确定的,像游戏修改器,就可以改这个确定的地址的值达到修改游戏数据的目的;而动态的不同,地址是不确定的,通过malloc或new返回,所以游戏修改就不能直接指定地址了。
      

  4.   

    至于静态、动态的实现么,似乎是前者是在栈中分配的(汇编里面push、pop之类的,个人理解,可能有误),而后者是在堆中分配的。
    其实一开始不清楚这些概念也无所谓阿,反正做多了,以后自然会明白。
      

  5.   

    操作系统如何知道程序运行时怎么来分?
    --------------------------------------
    其实你的程序里面都有啊,比如静态分配int a=0;
    做的事情就是在数据区分配一块内存。
    动态分配的话就是在另外一块区域分配内存,都是你程序里面做的(只不过这部分代码不用你自己写,C++里面帮你做了)