• 进程地址空间(二)


    #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  


  • 相关阅读:
    自主学习之RxSwift(一) -----Driver
    RxSwift:ReactiveX for Swift 翻译
    C简单实现动态顺序表
    C简单实现双向链表
    C实现单链表
    享受这一点点的平淡
    C文件读写
    大神都在看的RxSwift 的完全入坑手册
    字符串常量存在何处
    认识自己
  • 原文地址:https://www.cnblogs.com/helloweworld/p/3307799.html
Copyright © 2020-2023  润新知