现在位置: 首页

深入剖析 linux GCC 4.4 的 STL string

2019-11-18 10:02 工业·编程  ⁄ 共 11377字 暂无评论
本文通过研究STL源码来剖析C++中标准模板块库std::string运行机理,重点研究了其中的引用计数和Copy-On-Write技术。 平台:x86_64-redhat-linux gcc version 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC) 1. 问题提出 最近在我们的项目当中,出现了两次与使用string相关的问题。  1.1 问题1:新代码引入的Bug 前一段时间有一个老项目来一个新需求,我们新增了一些代码逻辑来处理这个新需求。测试阶段没有问题,但上线之后,偶...
阅读全文

C/C++:宏定义的有效范围

2019-11-17 09:22 工业·编程  ⁄ 共 518字 暂无评论
    在C/C++中,宏定义的有效范围被规定为当前文件内有效。     “当前文件内有效”分为两种情况,一种是定义在头文件中,另一种是定义在源文件中。     1)在头文件中的宏定义,随着头文件一同被包含到源文件中时,此时宏定义在该源文件中有效,当头文件中的宏定义随着该头文件一起被包含到另一个头文件中,而这另一个头文件又被另一个源文件包含,则该宏定义在最终被包含的源文件中...
阅读全文

C/C++中#define宏定义的作用域

2019-11-16 09:17 工业·编程  ⁄ 共 308字 暂无评论
#include <iostream> using namespace std; void t(void) {     #define a 10 }   int main() {    cout << a<<endl;    return 0; } 如上代码编译,打印输出结果为10。由此可见#define的作用域是文件作用域,在定义之后的位置使用都有效。改变其作用域可在后面加#undef。如下 #include <iostream> using namespace std; void t(void) {     #de...
阅读全文

C标准面面观:GNU C、ANSI C、ISO C

2019-11-15 09:11 工业·编程  ⁄ 共 565字 暂无评论
C语言作为一种常用的计算机开发语言,被用于各种领域,尤其是单片机与嵌入式的开发,在现阶段更有着无可替代的作用.使用过程中我们经常会听说 GUN C 、ANSI C、标准C这几个术语,在了解这几个术语对应的C标准之前,我们需要先了解三个组织,分别是自由软件基金会,美国国家标准学会以及国际标准化组织。下面对其三个组织进行简单说明: 自由软件基金会:是美国的一个民间非营利组织,致力于推进自由软件,其中linux与gnu就是由这...
阅读全文

习近平:在金砖国家领导人巴西利亚会晤公开会议上的讲话

2019-11-14 22:52 战略·谋略  ⁄ 共 1800字 暂无评论
尊敬的博索纳罗总统, 尊敬的普京总统, 尊敬的莫迪总理, 尊敬的拉马福萨总统: 很高兴同大家相聚在巴西利亚,首先我要感谢博索纳罗总统盛情邀请和热情周到安排。 这是我10年来第三次到访巴西。再次踏上这片充满活力的热土,巴西广袤的土地、丰富的资源、热情的人民、巨大的潜力使我印象深刻。 这次会晤是在世界经济发展和国际格局演变的关键时刻举行的。环顾全球,新科技革命和产业变革方兴未艾,为各国实现跨越式发展提供...
阅读全文

Linux下用c实现的一个线程池

2019-11-14 11:19 工业·编程  ⁄ 共 5908字 暂无评论
  什么时候需要创建线程池呢?简单的说,如果一个应用需要频繁的创建和销毁线程,而任务执行的时间又非常短,这样线程创建和销毁的带来的开销就不容忽视,这时也是线程池该出场的机会了。如果线程创建和销毁时间相比任务执行时间可以忽略不计,则没有必要使用线程池了。   下面是Linux系统下用C语言创建的一个线程池。线程池会维护一个任务链表(每个CThread_worker结构就是一个任务)。   pool_init()函数预先创...
阅读全文

C语言标准演变

2019-11-13 09:07 工业·编程  ⁄ 共 1222字 暂无评论
1.K&R C 1978年,丹尼斯•里奇(Dennis Ritchie)和布莱恩•柯林汉(Brian Kernighan)合作出版了《C程序设计语言》的第一版。书中介绍的C语言标准也被C语言程式设计师称作“K&R C”,第二版的书中也包含了一些ANSI C的标准。K&R C主要介绍了以下特色: 结构(struct)类型 长整数(long int)类型 无符号整数(unsigned int)类型 把运算符=+和=-改为+=和-=。因为=+和=-会使得编译器不知道使用者要处理i = -10还是i =-...
阅读全文

C语言标准库

2019-11-12 09:06 工业·编程  ⁄ 共 669字 暂无评论
我们在写c语言的时候,经常要使用一些库函数。 虽然我们自己也可以进行写函数,但是,使用已经存在的函数,可以降低我们的工作量和我们代码出现问题的概率。 一般情况下,我们都会使用库函数,但是对于一些初学者而言,库函数,到底需要哪些,我们在自己的函数中,需要添加哪些库函数。有的是不是不需的。 1:基本的库函数 stdio.h和stdlib.h还有string.h这三个库函数,基本上是所有的c语言程序中都有的库函数,这...
阅读全文

系统函数和库函数的区别

2019-11-11 08:56 工业·编程  ⁄ 共 1990字 暂无评论
系统调用:是操作系统为用户态运行的进程和硬件设备(如CPU、磁盘、打印机等)进行交互提供的一组接口,即就是设置在应用程序和硬件设备之间的一个接口层。可以说是操作系统留给用户程序的一个接口。再来说一下,linux内核是单内核,结构紧凑,执行速度快,各个模块之间是直接调用的关系。放眼望整个linux系统,从上到下依次是用户进程->linux内核->硬件。其中系统调用接口是位于Linux内核中的,如果再稍微细分一下的话,整...
阅读全文

libc库和封装函数

2019-11-10 08:49 工业·编程  ⁄ 共 1117字 暂无评论
   Linux系统调用这部分经常出现两个词:libc库和封装函数,不知道你是否清楚它们的含义? libc  1)libc概念 libc是Stantard C Library的简称,它是符合ANSI C标准的一个标准函数库。libc库提供C语言中所使用的宏,类型的定义,字符串操作符,数学计算函数以及输入输出函数等。正如ANSI C是C语言的标准一样,libc只是一个函数库标准,每个操作系统都会按照该标准对标准库进行具体实现。通常我们所说的libc是特指...
阅读全文