动态链接库中的.symtab和.dynsym

shared library (.so) "Program Library Howto-Shared Libraries"是很好的材料, 下面的内容多是据此整理的. 定义: Shared libraries are libraries that are lo...

2018-09-13 21:59:59

阅读数:26

评论数:0

bss段不占据磁盘空间的理解

elf文件中.bss段: 存放未初始化的全局变量,将.data和.bss分开的理由是为了节约磁盘空间,.bss不占实际的磁盘空间。这句话该怎么理解呢?  可以看下面的例子: #include <stdio.h> int a[1000]; int b[...

2018-09-12 14:51:44

阅读数:11

评论数:0

关于BSS段的大小

1.BSS段中的内容 先明确 BSS 段“存放”的是未初始化的全局变量与局部静态变量,此处指的存放是指为其预留空间(占位符)。但BSS段在磁盘上不是真的占用变量大小的空间,它仅是在该段中记录了所有未初始化全局变量与局部静态变量的大小总和,至于每个变量的大小则存储在符号表的size属性中。即:  ...

2018-09-12 14:35:43

阅读数:15

评论数:0

字符串转换成整数

#include<iostream> #include<string> #include<limits> using namespace std...

2018-08-20 10:50:19

阅读数:52

评论数:0

linux编译动态库之fPIC

在生成动态库时,常常习惯性的加上fPIC选项,fPIC有什么作用和意义,加不加有什么区别,这里做下小结: fPIC的全称是 Position Independent Code, 用于生成位置无关代码。什么是位置无关代码,个人理解是代码无绝对跳转,跳转都为相对跳转。 1、不加fPIC选项 即使...

2018-08-17 10:39:05

阅读数:50

评论数:0

使用 __declspec(dllimport) 导入函数调用

下面的代码示例显示如何使用 _declspec(dllimport) 将函数调用从 DLL 导入到应用程序中。 假定 func1 是驻留在某个 DLL 中的函数,而此 DLL 与包含“主”函数的 .exe 文件是分开的。 不使用 __declspec(dllimport),给出此代码: in...

2018-08-16 21:38:43

阅读数:168

评论数:0

__declspec(dllexport)与__declspec(dllimport)

区别        他们都是DLL内的关键字,即导出与导入。他们是将DLL内部的类与函数以及数据导出与导入时使用的。       dllexport是在这些类、函数以及数据的申明的时候使用。用他表明这些东西可以被外部函数使用,即(dllexport)是把 DLL中的相关代码(类,函数,数据)暴...

2018-08-16 21:33:21

阅读数:30

评论数:0

awk练习1

1. sed和awk有什么区别? (1)awk:按列(域)操作;sed:按行操作 (2)awk:文本处理语言,适合对文本进行抽取处理;sed:非交互式的编辑器,适合对文本进行编辑 2. awk要处理域的时候,以哪个参数作为分割参数? -F   3. 请打印出/etc/passwd 第一个域...

2018-08-15 09:16:59

阅读数:26

评论数:0

epoll源码分析

在create后会创建eventpoll对象保存在一个匿名fd的file struct的private指针中,然后进程睡在等待队列上面。 对于等待的fd,通过poll机制在准备好之后会调用相应的call_back函数。在函数中将当前fd加入对应eventpoll的队列中。 然后唤醒等待队列上面的进...

2018-08-11 21:02:45

阅读数:29

评论数:0

C++常见面试题—内存管理GetMemory()

1.关于动态申请内存的问题 出现率极高   程序的局部变量存在于(栈)中 程序的全局变量存在于(静态存储区)中 程序动态申请的数据存在于(堆)中 <1> void GetMemory(char *p) { p = (char *)mal...

2018-08-10 18:15:45

阅读数:50

评论数:0

C++中explicit的用法

C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生,声明为explicit的构造函数不能在隐式转换中使用。 C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色。  1 是个构造;2 是个默认且隐含的...

2018-08-10 10:47:46

阅读数:19

评论数:0

详解c/c++中volatile关键字

一、volatile介绍 volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现...

2018-08-08 13:34:25

阅读数:13

评论数:0

一个TCP FIN_WAIT2状态细节引发的感慨

昨天下午跟同事讨论TCP挥手断开的细节,越发感到TCP协议真的是非常令人讨厌,这个协议已经成了人们装逼的谈资,就是因为它非常复杂,且毫无确定性可言!如果你能说出它的任何细节方面的前因后果,那你一定就是牛人了,但这其实毫无意义。 如果你阅读TCP的诸多RFC,然后对比着4.4 BSD,Linux,...

2018-07-31 10:40:00

阅读数:214

评论数:0

C++ 的单元测试工具 —— Catch

如果你平常使用 Java 语言做开发,当你听到单元测试工具的时候,你很可能马上会想起 JUnit。作为一名C++软件工程师,当我第一次打算给我的程序做单元测试的时候,我的第一想法是:有这样的工具吗?经过一段时间的搜索之后,我的反应变成了:我该用哪一个? 我在学校的时候,很少听说C++的单元测试工...

2018-07-22 20:21:52

阅读数:67

评论数:0

c语言中realloc()函数解析

realloc(void *__ptr, size_t __size):更改已经配置的内存空间,即更改由malloc()函数分配的内存空间的大小。 如果将分配的内存减少,realloc仅仅是改变索引的信息。 如果是将分配的内存扩大,则有以下情况: 1)如果当前内存段后面有需要的内存空间,则...

2018-07-20 14:30:27

阅读数:33

评论数:0

C++ 多态的实现及原理

C++的多态性用一句话概括就是:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是派生类,就调用派生类的函数;如果对象类型是基类,就调用基类的函数   1:用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数...

2018-07-19 16:45:50

阅读数:20

评论数:0

C++ 多态详解

前几天在网上看到这样的一个问题: 多态现在一般的用法,就是拿一个父类的指针去调用子类中被重写的方法。但我搞不懂为什么要那么做,我们直接在子类中写一个同名的成员函数,从而隐藏父类的函数不就行了么? 然后有人这样回答: 将父类比喻为电脑的外设接口,子类比喻为外设,现在我有移动硬盘、U盘以及MP3...

2018-07-19 16:41:35

阅读数:38

评论数:0

函数重写(override)与协变返回类型(covariant return type)

函数重写 在进行本文的协变返回类型(covariant return type)的讨论之前,不妨先重新温故C++关于函数重写的语法规则。协变返回类型与函数重写有着千丝万缕的联系。 首先明确函数重载(overload)与函数重写(override )之间的差异: 函数重载与函数重写 函数...

2018-07-19 15:44:52

阅读数:31

评论数:0

结构体字节对齐,pragma pack,__attribute__(packed)

程序编译器对结构的存储的特殊处理确实提高CPU存储变量的速度,但是有时候也带来了一些麻烦,我们也屏   蔽掉变量默认的对齐方式,自己可以设定变量的对齐方式。例如我们设置结构体的对齐方式:struct student{int age;char c;};对于以上结构体,默认用sizeof输出大小为8字...

2018-07-05 17:01:53

阅读数:19

评论数:0

c++问题集

1. C 和 C++ 区别    2. const 有什么用途    主要有三点:      1:定义只读变量,即常量       2:修饰函数的参数和函数的返回值       3: 修饰函数的定义体,这里的函数为类的成员函数,被const修饰的成员函数代表不修改成员变量的值 3. 指针和引用的区...

2018-07-02 14:16:03

阅读数:41

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭