[zz] 标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast
摘要:名词解释RTTI : Runtime Type Information, 意思是:运行时类型信息。它提供了运行时确定对象类型的方法。C 风格(C-style)强制转型如下:(T) exdivssion // cast exdivssion to be of type T函数风格(Function-style)强制转型使用这样的语法:T(exdivssion) // cast exdivssion to be of type T这两种形式之间没有本质上的不同,它纯粹就是一个把括号放在哪的问题。我把这两种形式称为旧风格(old-style)的强制转型。使用标准C++的类型转换符:static_ca
阅读全文
C程序可执行文件和运行时的内存分布
摘要:程序可执行文件(*.out)和运行时的内存分布一、程序运行时内存分布一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由手动分配释放 。3、已经初始化的全局变量和静态变量(.data)4、已经初始化的全局变量和静态变量(.bss),bss在文件中不占据空间。4、文字常量区(.rodata) —常量字符串就是放在这里的。5、程序代码区(text)—存放函数体的二进制代码。符串常量一般放在“.rodata”段里。-----高地址-----stack |
阅读全文
总结: linux下的多线程API (POSIX线程)
摘要:POSIX线程:一个完成的线程/进程包括三部分,代码+数据+内存栈;子线程和子进程在被创建的时候,对于fork()创建子进程,三部分都要复制一份,数据包括比如文件描述符,虚拟内存,子进程关闭文件描述符不会影响父进程中的描述符;对于pthread_create()创建子线程的时候,只有内存栈被复制,其他的部分(代码,数据都是共享的),如果一个线程改变了某变量的值,其他所有的线程都调用的是改变之后的值;头文件#include 编译参数: -lpthread(一)涉及到的类型:pthread_t, pthread_attr_t, pthread_cond_t, pthread_mutexattr_t
阅读全文