C++复习大纲

本文详细介绍了C++程序设计中的编译链接原理,包括进程虚拟地址空间、堆栈内存分配以及线程创建的限制。同时,对比了C和C++的区别,如默认参数、inline函数、const用法、函数重载等。此外,还探讨了C++中的函数模板、new和delete操作以及namespace的使用。
摘要由CSDN通过智能技术生成

一、C++程序设计–编译链接原理

进程虚拟地址空间
前提:32位CPU 32位linux内核
2^32(4G)的虚拟地址空间,分别包括用户空间(3G)和内核空间(1G),每一个进程用户空间是私有的,内核空间是共享的
用户空间:0x08048000开始 .text .rodata .data .bss heap 共享库区域(*.so) stack 命令行参数 环
境变量PATH
内核空间:ZONE_DMA(16M) Direct Memory Access ZONE_NORMAL(896M) .text .rodata. heap stack
ZONE_HIGHMEM(高端内存 用户空间采用的地址映射方式是二级页表映射,而内核空间的地址映射方式采用的线性映射,那么1G以上的物理内存如何进行映射,就靠这块高端内存区域了)
堆内存heap分配,从低地址 到 高地址;栈内存stack的分配,从高地址到低地址。data段的内存程序
启动时候分配,程序运行结束内存释放;heap内存是在调用new或者malloc的时候分配,调用delete或者free的时候释放;调用函数分配新的栈空间,函数出右括号占内存释放。
32位linux创建进程fork(资源划分的单位)的上限:0-32767 进程间的通信(匿名管道、命令管道、消息队列、共享内存、信号量);创建线程pthread_create,一个进程创建线程的上限数量是多少(线程栈的大小是8M),3G / 8M = 384 ,如果如何提高进程里面创建

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值