小编vij*_*231的帖子

堆,堆栈,文本等不同的段如何与物理内存相关?

  1. 编译C程序并创建目标文件(ELF)时.目标文件包含不同的部分,如bss,数据,文本和其他段.我知道ELF的这些部分是虚拟内存地址空间的一部分.我对吗?如果我错了,请纠正我.

  2. 此外,将存在与编译的程序相关联的虚拟存储器和页表.页表在加载程序时将ELF中存在的虚拟内存地址与实际物理内存地址相关联.我的理解是否正确?

  3. 我在创建的ELF文件中读到,bss部分只保留未初始化的全局变量的引用.这里未初始化的全局变量是指在声明期间未初始化的变量?

  4. 另外,我读到局部变量将在运行时(即堆栈中)分配空间.那么它们将如何在目标文件中引用?

  5. 如果在程序中,有特定的代码段可用于动态分配内存.如何在目标文件中引用这些变量?

我很困惑,目标文件的这些不同部分(如文本,rodata,数据,bss,堆栈和堆)是物理内存(RAM)的一部分,所有程序都在其中执行.但我觉得我的理解是错误的.当进程或程序执行时,这些不同的段如何与物理内存相关?

c stack memory-management elf

18
推荐指数
3
解决办法
1万
查看次数

指向函数的指针的语法,该函数返回C中的函数指针

如何声明一个返回另一个函数指针的函数的指针?请与我分享语法和示例代码段.

另外,在哪种情况下会使用返回函数指针的函数指针?

c syntax declaration

5
推荐指数
2
解决办法
2212
查看次数

如何在C编程中找到函数的结束地址?

起始地址可以从函数名中获取,如何查找函数的结束地址?我在采访中被问到这个问题:

考虑我写的函数f()已越过文本部分并开始编写相邻部分(数据部分).我该如何处理这种情况?他还补充说我应该通过C代码处理它.我不应该看到符号映射文件并获取地址.

c

5
推荐指数
2
解决办法
1901
查看次数

如何解决链表中损坏的指针?

如果我发现链表中的指针(链接)字段已损坏,我该如何解决这个问题?

我在面试中被问到这个问题.我说不,它不可能解决它.采访者告诉它可能.有什么方法吗?

c linked-list

2
推荐指数
1
解决办法
2914
查看次数

C程序中未初始化的内存位置的物理内存位置?

我已经读过C中未初始化的全局变量将占用内存的.bss部分.它也只是一个占位符,不会占用目标文件中的任何空间.

我的问题是,一旦未初始化的全局变量被分配了一些值,它将在哪里存储在物理内存中?

例如:

int a[100];

int main()
{
    a[10] = 25;
}
Run Code Online (Sandbox Code Playgroud)

在上面的程序中,将分配内存位置?

c

1
推荐指数
1
解决办法
225
查看次数

标签 统计

c ×5

declaration ×1

elf ×1

linked-list ×1

memory-management ×1

stack ×1

syntax ×1