获取进程段C / C ++的开始和结束

时间:2014-10-18 22:31:50

标签: linux memory c c++

我需要获取以下流程段的起始和结束地址:代码,数据,堆栈,环境。我理解它在内存中的位置,但不知道如何使用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执行此操作?

0 个答案:

没有答案