关于函数存储方式的疑惑
来源:6-3 一般指针,数组指针和指针数组
jyau
2021-10-06
NDK开发的时候,错误堆栈里面报的都是内存地址,需要通过符号表恢复成函数名称。所以函数加载到内存中之后每次分配的内存地址都是固定的吗?这是编译器定的?如果是的话,多个程序的函数怎么保证使用的内存不冲突?
写回答
1回答
-
quickzhao
2021-10-07
绝对额地址信息并不稳定,可能随操作系统环境的变化而改变,一般可执行程序的文件加载到内存中的相对位置是稳定的;生成的可执行程序有其固定的格式,在C++程序通过编译生成时确定函数的列表并存入可执行程序,如Windows下的PE文件,在被加载到内存时会根据PE文件的数据区块和RVA(相对虚拟地址)来确定函数等的位置,不会发生冲突。
022021-10-07
相似问题