我需要获取以下流程段的起始和结束地址:代码,数据,堆栈,环境。我理解它在内存中的位置,但不知道如何使用API调用或其他方式获取它。我已经找到了如何使用此代码开始一些段:
#include <stdio.h>
int temp_data = 100;
static int temp_bss;
void print_addr ( void )
{
int local_var = 100;
int *code_segment_address = ( int* ) &print_addr;
int *data_segment_address = &temp_data;
int *bss_address = &temp_bss;
int *stack_segment_address = &local_var;
printf ( "\nAddress of various segments:" );
printf ( "\n\tCode Segment : %p" , code_segment_address );
printf ( "\n\tData Segment : %p" , data_segment_address );
printf ( "\n\tBSS : %p" , bss_address );
printf ( "\n\tStack Segment : %p\n" , stack_segment_address );
}
int main ( )
{
print_addr ();
return 0;
}
但我不知道如何找到每个细分的结尾。我知道一段的结尾是另一段的开头,但我不确定。如何使用C和Linux API执行此操作?