Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 可执行到库内存分配_C++_Memory_Memory Management - Fatal编程技术网

C++ 可执行到库内存分配

C++ 可执行到库内存分配,c++,memory,memory-management,C++,Memory,Memory Management,我从一个可执行文件a开始。它将作为一个静态库重新导出,我将在可执行文件B中使用它 在可执行文件A的源代码中,我有一个: int a[100][100]; 这是在全球一级宣布的 在运行可执行文件时,变量A按预期位于堆上,并且围绕它的内存内容为0 我的问题如下: 当运行可执行文件B时,变量a将位于何处?可执行文件B链接并使用从可执行文件a生成的静态库a中的变量 int a[100][100]; a、 作为全局变量,将位于全局空间中,每个可执行文件位于单独的地址空间中,因为它们是静态链接的,因此没

我从一个可执行文件a开始。它将作为一个静态库重新导出,我将在可执行文件B中使用它

在可执行文件A的源代码中,我有一个:

int a[100][100];
这是在全球一级宣布的

在运行可执行文件时,变量A按预期位于堆上,并且围绕它的内存内容为0

我的问题如下:

当运行可执行文件B时,变量a将位于何处?可执行文件B链接并使用从可执行文件a生成的静态库a中的变量

int a[100][100];

a、 作为全局变量,将位于全局空间中,每个可执行文件位于单独的地址空间中,因为它们是静态链接的,因此没有公共共享。

变量a将位于程序的数据部分,而不是堆,堆=动态内存

换句话说,a将在相同的内存空间中,就像您将自己运行a一样,并且由于它是一个全局变量,因此它将与其他常量/静态/全局变量一起出现在程序的数据部分

静态链接库时,该库中编译的代码将被复制粘贴到新的可执行文件中。所以你不会处于a和B是分开的过程的情况


您有一个B,它使用从a编写的代码。

每个可执行文件都有自己的进程和内存空间。因此,可执行文件A的堆栈中将包含声明的变量,可执行文件B的堆栈中将包含它自己的副本


有关更多信息,请参阅。

变量a按预期位于堆上-不,这不是真的。这里没有涉及堆。好的。变量a将位于何处?为什么不运行a和B,并让它们都打印地址?你想实现或理解什么?A是一个执行任务C的可执行文件,我希望任务C也在可执行文件B中执行,同时使用一个静态库。