@ 良化纲领_
对LZ的文章提出了一些问题。
1. 确实,LZ的文章中关于进程栈的阐述隐含了一些前提:就是LZ阐述的是用户栈,当用户线程/进程陷入内核时,内核栈中必须有关于用户栈的处理。
但是LZ毕竟不是阐述内核的,若然对内核已经有较深的认识,很显然LZ的这部分阐述可以略过;若然对系统用户栈还没有认识,那么LZ的阐述实际上在用户程序方面上的考虑已经足够。
因此,在此提醒一下:LZ阐述的是用户栈,而且,通常都隐含了目前具有操作系统环境这一前提条件。
2. LZ说加载是依赖于PF的,这个确实不尽然。但是加载这一步骤是必须的;而且目前的主流CPU和实现,加载都是依赖于PF的。
3. 关于malloc/free, 确实C语言中的指针并不要求一定要能够动态获取内存,或者说,动态获取内存是实现相关的。不过实际上如果不能动态获取内存,指针的用处立刻显得很苍白。所以在隐含有操作系统环境的前提下,LZ的阐述仍然没有问题。
===============================================
@Hope_20121221_
指出了,C语言实现未必就是编译型的。
嗯,C语言标准绝对没有指定说C语言一定要是编译型实现。不过考虑到“真正有用的C语言实现”和目前的主流实现,LZ仍然将其看作为编译型实现的语言。
===============================================
感谢以上两位对LZ文章的说法提出质疑。LZ表示欢迎~
另外,大多数童鞋不必太担心LZ此文是否具有误导之嫌。LZ尽量不要误导大家。当童鞋们达到如上两位一样能够对LZ文章提出质疑的程度时,LZ的文章也自然已是过去式;倘若LZ此文确实对童鞋们有帮助,则甚好。
######################



