一个进程内有A,B,C等几个线程,
请问A,B,C,线程内变量的内存地址会不会出现重复?比如进程的地址空间从:
ox 0000 0000
......
0x 1FFF FFFF那么A,B,C,3个线程所占的地址空间是不是都只是进程内的一部分?
给定一个地址,比如0x 1FFE 0000,处的变量只可能是一个线程中的数据,要么是A ,要么B,或C。就是说A,B,C三个线程所占的内存不会重合,而是共同构成进程内存的一部分。
请问A,B,C,线程内变量的内存地址会不会出现重复?比如进程的地址空间从:
ox 0000 0000
......
0x 1FFF FFFF那么A,B,C,3个线程所占的地址空间是不是都只是进程内的一部分?
给定一个地址,比如0x 1FFE 0000,处的变量只可能是一个线程中的数据,要么是A ,要么B,或C。就是说A,B,C三个线程所占的内存不会重合,而是共同构成进程内存的一部分。
解决方案 »
- 用ATL开发一个web控件,怎么用属性返回值,给js调用
- 读取txt文档中数据
- 串口通讯windows接不到数据!
- winsock的六种io模型用来干什么的?不用io模型不是也可以写出通信的程序么?
- sscanf取出的值的问题,怎么取到的值都没有分割的?
- 有没有兄弟知道征途网络的情况,请介绍一二
- 我有一堆jpg图片,请问怎么能和并成一张大图?
- 我安装vc时,提示内存不足以运行安装程序,如何解决呀.高手们.
- 状态栏的第一项用默认的就不能用SetPaneText改,为什么啊
- DCOM用连接点通信,需要怎么配置DCOMCONFG
- DIRECTUI相关的问题
- 请教一下MFC的CFtpConnection和CIternetsession 发现一点问题?
————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
比如 windows 的虚拟内存,每个进程都用 4GB 的虚拟内存空间,线程共享简单说,进程统一管理程序资源,线程是用于执行调度的
进程中的内存要被很多人使用的, 线程使用的内存只是一个线程栈而已,大概有1M或者4M,总之不大,这个用户线程的内的零时变量分配,线程执行的代码在代码段中,多个线程执行一个函数,他们存储函数的内存是相同的
进程中有很多系统DLL,第三放DLL等都是在这个进程内存中,
线程使用的内存就2个. 栈,每个线程都有一个, 线程执行的代码,代码是唯一的,可以有多个线程执行
————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
线程1的栈变量, 只要被引用到外部, 被其他线程访问修改的话, 这个变量也是会改变其值的, 但必须当前调用的函数在外部修改访问完毕前不能够返回.
线程1里面new出来的堆变量, 引用到外部, 被其他线程访问是依旧合法的, 但必须访问修改完毕前, 不能够delete.TLS只是一种线程动态内存管理方式, 并不代表其里面的内存是独立的, 只能够说线程new出来的东西, 可以在线程退出时通过TLS的管理机制得到全部释放而已.
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpsa,
DWORD cbStack,
LPTHREAD_START_ROUTINE lpStartAddr,
LPVOID lpvThreadParam,
DWORD fdwCreate,
LPDWORD lpIDThread
);
),第二个参数,就是用于分配堆栈的,在内存地址上不会冲突,但是若资源访问对象相同时就不好说了