库(如DLL和SOs)可以是有状态的吗?

库(如DLL和SOs)可以是有状态的吗?,dll,static,shared-libraries,stateful,Dll,Static,Shared Libraries,Stateful,我想知道库是否可以是有状态的。换句话说,库是否可以使用持久值在其内部存储变量 我想答案是否定的,但我只是想确认一下 我使用的大多数库都是用C编写的,并且不是面向对象的。它们仅由静态函数组成,这些函数在您传递给它们的指针上工作,但指针指向的实际内存块实际位于程序的可寻址空间内;不是图书馆的。是的,他们可以。没有什么可以阻止DLL中的代码分配内存。我很确定C++也是如此。在幕后,我相信有一些函数在结构上运行。如果它们确实分配了自己的内存,那不是一件坏事吗?例如,应用程序A和应用程序B都使用相同的共享

我想知道库是否可以是有状态的。换句话说,库是否可以使用持久值在其内部存储变量

我想答案是否定的,但我只是想确认一下


我使用的大多数库都是用C编写的,并且不是面向对象的。它们仅由静态函数组成,这些函数在您传递给它们的指针上工作,但指针指向的实际内存块实际位于程序的可寻址空间内;不是图书馆的。

是的,他们可以。没有什么可以阻止DLL中的代码分配内存。我很确定C++也是如此。在幕后,我相信有一些函数在结构上运行。如果它们确实分配了自己的内存,那不是一件坏事吗?例如,应用程序A和应用程序B都使用相同的共享库。应用程序A使用库,库中的持久变量被赋值为“A”。应用程序B执行相同的操作,相同的变量更改为“B”。应用程序A没有意识到更改,仍然认为值为“A”。应用程序A和应用程序B都有各自的库实例,除非您使用共享内存做一些非常有趣的事情。您应该将此作为答案,以便我可以接受: