- 论坛徽章:
- 0
|
非常感谢大家的回答,我想我可能是把问题弄混了,一个是编译概念,一个是运行概念.不过这个问题的出现确实很怪.每个进程都应该有自己的独立地址空间,无论是堆还是栈应该都是自己私有的,别的进程应该无法直接访问,比如通过指针.我想问题可能还是在于这个声明为extern的在某个进程内定义的函数,是可重用的,这个进程可用,其他的进程也可有调用.这应该是link时把这个函数代码link到各个不同的模块.我把这个问题搞混了,可能也是因为没有考虑到有操作系统的API调用可以让进程共享全局变量.
关于这个函数可重入,我还有一个问题,是以前一个面试时候的问题.有个人问我,象有的程序notepad,可以运行多个出来.象有的程序,如acrobat,就只能运行一个出来. 我当时回答的是sdi(单窗口)和mdi(主从窗口)的区别.但好象也不对.比如象myie. 好象就可以同时运行多个,每个里面也有多个窗口.不知道这不是因为notepad和acrobat这种程序的写法区别,和用到的可重入还是什么不能重入的函数区别?有人说是因为程序中自己做了处理,启动时会检测系统中是否已经注册了一个相同的进程.我觉得也不正确. 不知道这是因为什么原因呢? |
|