#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