我一直在阅读为共享库进行初始化时会发生什么。这个概念一切都很好,但我不清楚如何分配内存及其在程序中的范围。
例如,在堆栈或堆上的DLLMain中创建一个整数(无论是process_attach还是thread_attach)。是程序的全局范围内的整数还是在其他地方?就像在,如果我在DLLMain中的一个整数中新建它是否可以在程序中全局访问,或者只是专门用于main或者其他一些奇怪的情况?如果它可以在全局范围内访问,那是否意味着所有线程也可以访问该内存?
感谢您的帮助。
答案 0 :(得分:0)
任何知道其地址的线程都可以访问它。所有线程都具有相同的虚拟内存视图。它来自哪个分配器并不重要,因为一旦它被映射到虚拟内存,所有内存的行为都是一样的。