C++编程

发布于:2023-01-16 ⋅ 阅读:(448) ⋅ 点赞:(0)

 内存四区与new操作符
        (1)代码段:
            .text
                主要存放代码(用户代码)包括main函数以及其他用户自定义的函数
                只读并且共享,这段内存在程序的运行期间是不会被释放
            
            .init
                主要是存放系统给每一个可执行文件自动添加的“初始化代码”
                    (例如:命令行的参数、环境变量的准备 ... )


        (2)数据段
            .data 
                主要存放程序 已经初始化的全局变量 和 已经初始化的static静态变量
                    可读可写,这段内存在程序的运行期间是不会被释放
            
            .bss
                主要存放 未初始化的全局变量 和 未初始化的static静态变量
                    可读可写,这段内存在程序的运行期间是不会被释放
                    .bss段 在进程初始化的时候(可能)被初始化为0  (编译器的优化)
            
            .rodata
                read only 只读数据段 
                主要存放程序中的只读数据(例如:字符串常量)
                    只读,这段内存在程序的运行期间是不会被释放


        (3)栈空间 Stack 
                主要是存放局部变量(非static修饰的)
                    可读可写,这段空间会自动释放
                    (代码块执行完毕,代码块中的所有局部变量的空间都会自动释放)
                    随代码块的持续性 
                    
                    
        (4)堆空间 heap 
                动态内存空间
              C语言中:  主要是 malloc / realloc / calloc 动态分配的空间
                                    可读可写,这段内存在程序的运行期间,一旦分配成功 就一直存在,
                                        直到手动释放free() 或者 进程消亡 

               C++中:new创建

                            delete释放

         代码如下