随笔分类 - 编程语法 / C/C++语法
摘要:堆空间,new操作初始化 1、对于有自己写构造函数的类,不论类型名后面有没有括号()或者数组[],都用构造函数进行初始化,如果构造函数delete,则编译报错; 2、如果没有构造函数,则不加括号的new只分配内存空间,不进行内存的初始化, 3、而加了括号()的new会在分配内存的同时初始化为0。 栈
阅读全文
摘要:malloc 是线程安全的,但是不可重入。malloc 在堆上分配内存,而其内部为了效率,维护了一个堆块链表,这个链表是全局静态变量,导致它不是可重入的。 socket()是可重入的,它底层使用系统调用。 内核在执行系统调用时,处于进程上下文,即引发系统调用的那个进程。在进程上下文中,内核可以休眠并
阅读全文
摘要:strlen和sizeof表示不同的含义。 strlen表示的是一个计数器的工作,它是从内存的某个位置(这里的位置可以是字符串开头,中间某个位置,也可以是某个不确定的内存区域)开始扫描,然后直至碰到第一个字符串结束符'\0'为止,然后返回计数器值。 sizeof在C语言中是用于判断数据类型或者表达式
阅读全文
摘要:C/C++编译器的缺省字节对齐方式为自然对界。 * 即在缺省情况下,编译器为每一个变量或是数据单元按其自然对界条件分配空间。 在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间。各个成员按照它们被声明的顺序在内存中顺序存储(成员之间可能有插入的空字节),第一个成员的地址和
阅读全文
摘要:CMAKE是一个开源、跨平台的编译、测试和打包工具,它使用比较简单的语言描述编译、安装的过程,**输出Makefile或者project文件,再去执行构建**。 在linux环境下编写C++程序是没有类似windows下编译器的一键编译和运行的按钮,只能由开发人员进行手动编译、运行;当多人协同开发一
阅读全文