我有一个C共享库(在我的情况下是DLL),该库以非常程序化的方式用于函数调用。换句话说,主应用程序(.exe)在不同的时间对该DLL进行单独的函数调用。我想在DLL中的某些功能之间共享相同的数组变量。有一个分配和初始化数组的函数。还有另一个函数将数组用于某些计算。但是这些功能是分别从主应用程序中调用的。因此,我无法将数组从初始化函数传递给DLL中的另一个函数,因为每个函数都是分别(在不同的时间)调用的。
我想避免使用全局变量。我可以做到这一点,并静态地将数组定义为具有足够大的 大小,以便“安全”。但是足够大可能意味着不必要地非常大。我见过一些建议在函数中定义数组的文章,但将其作为静态变量并在初始化函数调用中动态分配它,但我仍然需要在其他函数中访问同一数组。
在确保可以从多个函数访问同一数组的同时,保持代码通用(即使用动态内存分配)的最佳方法是什么?
更新
一些讨论后的更多细节。
一种可能的方法是在调用方(.exe)中保留数组的句柄,并在需要时将其传递给DLL函数。但是,从接口/ API的角度来看,继续传递此数组是没有意义的,因为这将需要更改不应该更改的功能签名。该数组应确实位于DLL中,并且可以在任何地方访问。我只需要在DLL中调用初始化函数时更新其内容。然后其他DLL函数将在DLL内部使用它。