
C/C++
wshn13
linux c/cpp/py coder in Kingsoft
展开
-
static_cast、dynamic_cast、reinterpret_cast、和const_cast
关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。下面对它们一一进行介绍。st转载 2012-03-27 14:16:28 · 354 阅读 · 0 评论 -
关于const重载
对于基本数据类型,函数的参数前面加不加const都是一样的,但对于指针和引用,参数前面加const与不加const是不同类型的参数,因此是重载函数。 int comp(int a){ return a;}int comp(const int a){ return a;}转载 2012-08-15 10:33:14 · 573 阅读 · 0 评论 -
C++ 中的空类,默认产生哪些类成员函数?
class Empty{public:Empty(); // 缺省构造函数 Empty( const Empty& ); // 拷贝构造函数 ~Empty(); // 析构函数 Empty& operator=( const Empty& ); // 赋值运算符 Empty* operator&(); // 取址运算符 const Empty* operator&(转载 2012-08-07 09:30:21 · 1656 阅读 · 0 评论 -
内存对齐的初步讲解
一.内存对齐的初步讲解内存对齐可以用一句话来概括:“数据项只能存储在地址是数据项大小的整数倍的内存位置上”例如int类型占用4个字节,地址只能在0,4,8等位置上。例1:#include struct xx{ char b; int a; int c; char d;};int main()转载 2012-08-06 14:04:22 · 1166 阅读 · 0 评论 -
深入C++拷贝构造函数
先从我最近遇到的一个诡异的现象说起,来看一段代码:#include using namespace std;class test{public: test(){} test(test &t) { data = t.data; } test func(test t)转载 2012-06-11 14:53:20 · 780 阅读 · 0 评论 -
关于LD_DEBUG
LD_DEBUG 是 glibc 中的 loader 为了方便自身调试而设置的一个环境变量。通过设置这个环境变量,可以方便的看到 loader 的加载过程。 LD_DEBUG=help ./mainValid options for the LD_DEBUG environment variable are: libs display library sea原创 2012-05-09 11:21:27 · 5925 阅读 · 4 评论 -
ELF的GOT和PLT以及PIC
http://zhiwei.li/text/2009/04/elf%E7%9A%84got%E5%92%8Cplt%E4%BB%A5%E5%8F%8Apic/ELF 格式的共享库使用 PIC 技术使代码和数据的引用与地址无关,程序可以被加载到地址空间的任意位置。PIC 在代码中的跳转和分支指令不使用绝对地址。PIC 在 ELF 可执行映像的数据段中建立一个存放所有全局变量指针的全局偏移转载 2012-05-07 11:54:26 · 1026 阅读 · 0 评论 -
gcc与obj文件,动态链接文件和ELF文件
1、obj文件 程序员编写程序,其实就是编写出一个2进制(binary)文件。假如我们声明一个变量char c,也就是声明需要一个8bit的空间,那么就需要向系统声明豫留8bit的空间,怎么做到这一点呢?就是编译一个特殊的2进制文件--obj文件,用gcc编译的C语言得到的执行文件,里面不仅包含CPU指令,还有很多别的信息在里面,它有很多格式COFF、ELF……等等,在最后一道编译过转载 2012-05-07 10:34:20 · 1129 阅读 · 0 评论 -
ELF 文件格式常见段名称及自定义段
除了最常见的为 .text, .data, .bss 这 3 个段之外,还有其它的一些常见段,如下所示:.strtab : String Table 字符串表,用于存储 ELF 文件中用到的各种字符串。.symtab : Symbol Table 符号表,从这里可以所以文件中的各个符号。.shstrtab : 是各个段的名称表,实际上是由各个段的名字组成的一个字符串数组。转载 2012-05-07 09:39:55 · 6454 阅读 · 0 评论 -
从程序员角度看ELF
从程序员角度看ELF原文:《 ELF:From The Programmer's Perspective》作者:Hongjiu Lu NYNEX Science & Technology, Inc. 500 Westchester Avenue White Plains, NY 10604, USA 翻译:alert7转载 2012-05-05 11:22:01 · 821 阅读 · 0 评论 -
Making C++ ready for the desktop
Author: Waldo Bastian Date: May 3, 2001Version: 1.1 (See bottom for change history)In this paper I would like to bring the attention to an important performancebottleneck in the ld.so linker转载 2012-04-28 15:07:02 · 940 阅读 · 0 评论 -
C++带有虚函数的单继承类的构造过程探索,msvc和gcc编译器
http://saturnman.blog.163.com/blog/static/557611201081421344244/对于C++带于虚函数的单继承类的构造过程我原来写过一篇日志,感觉还有一些不够明确,这里通过调式器再看一下到底构造过程中发生了什么。本文是通过对msvc和gcc这两大主流编译器的编译结果调式来探所在带于虚函数的单继承类的构造过程中发生的事情,对于其它编译转载 2012-09-04 16:02:42 · 1047 阅读 · 0 评论