我也不知道这个问题是不是应该放在这里,但看这里人气多,所以就……我经常会为这些问题所困惑:1.Console程序和一个纯DOS程序有什么区别??
Console程序是16位的还是32位?在NT下面的“命令行提示符”窗口中运行的程序是16位的还是32位的?CS(我指的是反恐精英游戏)是不是一个纯DOS程序呢?为什么在他开始运行的时候屏幕要全部黑一下,然后开始运行?那些“要先黑一下,再在全屏下运行”的程序和那些在规范的WINDOWS窗口下运行的程序有什么区别?有人说CS是运行在一中V86的模式下,但是我直接用16位的汇编指令编写了一个纯8086的程序,拿到XP下面执行,但是它还是规规矩矩地在命令行提示的窗口中运行,他在运行时是16位的吗?这个纯16位的8086为什么没有“使屏幕先黑一下,再全屏运行”呢?2.NT不是和DOS绝缘了吗?为什么我还可以在XP下写汇编程序的时候使用“int 21h”去“call DOS”呢?!经常会看到有的书上说“哪些内存是干什么的”,“哪些内存被系统占用了”等等。他们怎么知道的呢?是不是有什么程序可以窥探内存的使用情况,或者有什么文档说明这些呢?3.整个Intel 80X86指令系统没有一条指令是动态分配内存的.所有程序的数据段,都必须有明确的界限但是C++这样的高级语言中却有new和delete这样的关键字.C++是怎样实现这项功能呢?如果他提前申请了大段内存,然后进行分配,那么我用一个死循环去new一系列数据,C++程序仍然可以做到,并直到内存耗尽为止,请问这又如何解释?请大家尽量解释,或发表自己的看法,但尽量要有根据,可以给出一些解答类似问题的书籍。谢谢!
Console程序是16位的还是32位?在NT下面的“命令行提示符”窗口中运行的程序是16位的还是32位的?CS(我指的是反恐精英游戏)是不是一个纯DOS程序呢?为什么在他开始运行的时候屏幕要全部黑一下,然后开始运行?那些“要先黑一下,再在全屏下运行”的程序和那些在规范的WINDOWS窗口下运行的程序有什么区别?有人说CS是运行在一中V86的模式下,但是我直接用16位的汇编指令编写了一个纯8086的程序,拿到XP下面执行,但是它还是规规矩矩地在命令行提示的窗口中运行,他在运行时是16位的吗?这个纯16位的8086为什么没有“使屏幕先黑一下,再全屏运行”呢?2.NT不是和DOS绝缘了吗?为什么我还可以在XP下写汇编程序的时候使用“int 21h”去“call DOS”呢?!经常会看到有的书上说“哪些内存是干什么的”,“哪些内存被系统占用了”等等。他们怎么知道的呢?是不是有什么程序可以窥探内存的使用情况,或者有什么文档说明这些呢?3.整个Intel 80X86指令系统没有一条指令是动态分配内存的.所有程序的数据段,都必须有明确的界限但是C++这样的高级语言中却有new和delete这样的关键字.C++是怎样实现这项功能呢?如果他提前申请了大段内存,然后进行分配,那么我用一个死循环去new一系列数据,C++程序仍然可以做到,并直到内存耗尽为止,请问这又如何解释?请大家尽量解释,或发表自己的看法,但尽量要有根据,可以给出一些解答类似问题的书籍。谢谢!
多说一点,对于像char buffer[255]这样的方法,其实道理是一样的。