进程地址空间(二)

#include <iostream>
#include <iomanip>
#include <stdlib.h>
using namespace std;

#define WIDTH 40

int BSS_global_uninit_a;
int BSS_global_uninit_b;

int static BSS_global_uninit_static_a; 
int static BSS_global_uninit_static_b;

int DS_global_init_a = 1;
int DS_global_init_b = 1;

int DS_global_init_static_a = 1; 
int DS_global_init_static_b = 1; 

int const TEXT_global_init_const_a = 1;
int const TEXT_global_init_const_b = 1;

int const static TEXT_global_init_const_static_a = 1;
int const static TEXT_global_init_const_static_b = 1;

void fun(int stack_fun_para)
{
    int stack_fun_a = 1;
    cout << std::left << setw(WIDTH) << "&stack_fun_para" << &stack_fun_para << endl;    
    cout << std::left << setw(WIDTH) << "&stack_fun_a" << &stack_fun_a << endl;    
}

int main()
{
    int stack_a = 1;
    int stack_b = 1;
   
    int static DS_main_static_a = 1; 
    int static DS_main_static_b = 1;

    int *heap_a = (int*)malloc(4);
    int *heap_b = (int*)malloc(4);

    cout << "**********STACK*************" << endl;
    cout << std::left << setw(WIDTH) << "&stack_a" << &stack_a << endl;
    cout << std::left << setw(WIDTH) << "&stack_b" << &stack_b << endl;
    cout << std::left << setw(WIDTH) << "&heap_a" << &heap_a << endl;   
    cout << std::left << setw(WIDTH) << "&heap_b" << &heap_b << endl;   
    fun(1);

    cout << "**********HEAP*************" << endl;
    cout << std::left << setw(WIDTH) << "heap_a" << heap_a << endl;   
    cout << std::left << setw(WIDTH) << "heap_b" << heap_b << endl;   

    cout << "**********BSS*************" << endl;
    cout << std::left << setw(WIDTH) << "&BSS_global_uninit_static_a" << &BSS_global_uninit_static_a << endl;        
    cout << std::left << setw(WIDTH) << "&BSS_global_uninit_static_b" << &BSS_global_uninit_static_b << endl;        
    cout << std::left << setw(WIDTH) << "&BSS_global_uninit_a" << &BSS_global_uninit_a << endl;        
    cout << std::left << setw(WIDTH) << "&BSS_global_uninit_b" << &BSS_global_uninit_b<< endl;        

    cout << "**********DS*************" << endl;
    cout << std::left << setw(WIDTH) << "&DS_global_init_a" << &DS_global_init_a<< endl;        
    cout << std::left << setw(WIDTH) << "&DS_global_init_b" << &DS_global_init_b << endl;        
    cout << std::left << setw(WIDTH) << "&DS_global_init_static_a" << &DS_global_init_static_a << endl;        
    cout << std::left << setw(WIDTH) << "&DS_global_init_static_b" << &DS_global_init_static_b << endl;        
    cout << std::left << setw(WIDTH) << "&DS_main_static_a" << &DS_main_static_a << endl;
    cout << std::left << setw(WIDTH) << "&DS_main_static_b" << &DS_main_static_b << endl;

    cout << "**********TEXT***********" << endl;
    cout << std::left << setw(WIDTH) << "&TEXT_global_init_const_a" << &TEXT_global_init_const_a << endl;        
    cout << std::left << setw(WIDTH) << "&TEXT_global_init_const_b" << &TEXT_global_init_const_b<< endl;        
    cout << std::left << setw(WIDTH) << "&TEXT_global_init_const_static_a" << &TEXT_global_init_const_static_a << endl;        
    cout << std::left << setw(WIDTH) << "&TEXT_global_init_const_static_b" << &TEXT_global_init_const_static_b << endl;        
    cout << std::left << setw(WIDTH) << "&string" << &("hello") << endl;

    return 0;
}

 

 

 

root@ubuntu:~# ./a.out
**********STACK*************
&stack_a                                0xbfda54ec
&stack_b                                0xbfda54e8
&heap_a                                 0xbfda54e4
&heap_b                                 0xbfda54e0
&stack_fun_para                         0xbfda5470
&stack_fun_a                            0xbfda545c
**********HEAP*************
heap_a                                  0x93ad008
heap_b                                  0x93ad018
**********BSS*************
&BSS_global_uninit_static_a             0x804b100
&BSS_global_uninit_static_b             0x804b104
&BSS_global_uninit_a                    0x804b0f4
&BSS_global_uninit_b                    0x804b0f8
**********DS*************
&DS_global_init_a                       0x804b03c
&DS_global_init_b                       0x804b040
&DS_global_init_static_a                0x804b044
&DS_global_init_static_b                0x804b048
&DS_main_static_a                       0x804b04c
&DS_main_static_b                       0x804b050
**********TEXT***********
&TEXT_global_init_const_a               0x804967c
&TEXT_global_init_const_b               0x8049680
&TEXT_global_init_const_static_a        0x8049684
&TEXT_global_init_const_static_b        0x8049688
&string  


原文地址:https://www.cnblogs.com/helloweworld/p/3307799.html