Tag:

在这段代码中哪些可变部分存储到堆栈中?

我有以下代码,我真的不明白test_function中的哪些变量部分存储在堆栈段中? 在书中它说“这些变量的内存在堆栈段中”,所以我认为它是变量实际初始化为一个值的时候。 对? void test_function(int a, int b, int c, int d) { int flag; //is it this char buffer[10];// and this //or flag = 31337; //this and buffer[0] = ‘A’; //this. Or all of it? } int main() { test_function(1, 2, 3, 4); }

为什么全局变量存储在堆中?

为什么在以下示例中,全局变量存储在堆段中,而不是数据/ bss段? 从map伪文件的以下输出中,data / bss段是第3行。 这是因为它是读/写和匿名的。 以下2个条目是堆(如标签所示)。 这是/ proc // maps的输出: 00400000-00405000 r-xp 00000000 08:02 17962770 myexec 00604000-00605000 r–p 00004000 08:02 17962770 myexec 00605000-00606000 rw-p 00005000 08:02 17962770 myexec 00606000-00607000 rw-p 00000000 00:00 0 [heap] 00607000-00642000 rw-p 00000000 00:00 0 [heap] 7ffff7a15000-7ffff7bd0000 r-xp 00000000 08:02 22282470 ..libc2.19.so 7ffff7bd0000-7ffff7dcf000 —p 001bb000 08:02 22282470 ..libc-.19.so 7ffff7dcf000-7ffff7dd3000 r–p […]

C – 文本段中的内存段

有人能告诉我C中的“文本段”是什么,如果可能的话,请给我一个简单的例子吗?

如何在Visual Studio项目中引用用户定义的段的开头?

我正在努力转换与gnu工具链的ld链接的C程序,以使其作为visual-studio(2005)项目进行编译。 该程序将.data-symbols放在不同的段中,在初始化阶段,它在段之间复制数据。 指向段开头和结尾的指针在ld链接描述文件中定义。 我理解如何将变量定位到不同的,用户定义的段中,但我还没有弄清楚如何定义链接器常量,如_start_of_my_segment,或者是否有类似于Visual Studio中的链接描述文件。 我的目标是能够编译程序,最好不要修改引用链接器定义的符号的源代码,而是使用我自己的Visual Studio项目中的数据自定义布局。 下面是一些示例C代码,用于说明我想要做什么以及与gcc / ld链接时使用的make脚本的(精简,可能是语法错误)版本。 任何提示将不胜感激! #pragma data_seg( “MY_DATA_FOO” ) #pragma data_seg( “MY_DATA_BAR” ) #pragma comment(linker, “/section:MY_DATA_BAR,R”) __declspec(allocate(“MY_DATA_FOO”)) int foo1; __declspec(allocate(“MY_DATA_FOO”)) int foo2; __declspec(allocate(“MY_DATA_BAR”)) int bar1 = 1; __declspec(allocate(“MY_DATA_BAR”)) int bar2 = 2; #pragma data_seg( ) void test() { foo1 = bar1; foo2 = bar2; // i would rather do […]