C/C++
文章平均质量分 81
koozxcv
但行好事 莫问前程
展开
-
strcpy和strdup比较和详解
strcpy和strdup比较和详解函数和功能描述:①extern char *strdup(char *s);头文件:string.h功能: 将串拷贝到新建的位置处说 明:strdup不是标准的c函数。strdup()在内部调用了malloc()为变量分配内存,不需要使用返回的字符串时,需要用free()释放相应的内存空间,否则会造成内存泄漏。返回值:返回一个指针,指向为原创 2015-10-21 16:49:36 · 39979 阅读 · 0 评论 -
C++模板(二)
C++模板 四、类模板的默认模板类型形参 1、可以为类模板的类型形参提供默认值,但不能为函数模板的类型形参提供默认值。函数模板和类模板都可以为模板的非类型形参提供默认值。 2、类模板的类型形参默认值形式为:template class A{};为第二个模板类型形参T2提供int型的默认值。 3、类模板类型形参默认值和函数的默认参数一样,如原创 2016-01-20 09:53:13 · 537 阅读 · 0 评论 -
NULL指针、零指针、野指针
最近在看use-after-free原理,对一些代码中NULL指针不太理解,就各种google,感觉这篇中文的博客讲的还不错就转载过来和大家分享:原文链接:http://www.cnblogs.com/fly1988happy/archive/2012/04/16/2452021.html1. 空指针、NULL指针、零指针1.1什么是空指针常量0、0L、'\转载 2015-12-04 19:34:13 · 453 阅读 · 0 评论 -
__packed、#pragam pack()、 __attribute__(aligned(n))、 __attribute__(packed(n))字节对齐
下面的内容是我关于字节对齐阅读一些博客整理出来的。可能里面有重复的地方,不过这样也好,可以加深大家理解和记忆。重点部分我用红色字体体现出来了。 一、概念 对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。 二、为什么要字原创 2015-12-04 14:06:17 · 2264 阅读 · 0 评论 -
C++智能指针笔记
C++智能指针简单剖析字数3545 阅读228 评论1 喜欢1导读最近在补看《C++ Primer Plus》第六版,这的确是本好书,其中关于智能指针的章节解析的非常清晰,一解我以前的多处困惑。C++面试过程中,很多面试官都喜欢问智能指针相关的问题,比如你知道哪些智能指针?shared_ptr的设计原理是什么?如果让你自己设计一个智能指针,你如何完成?等等……。而且在看原创 2016-01-21 09:39:56 · 382 阅读 · 0 评论 -
c++模板(一)
C++模板 模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。 模板是一种对类型进行参数化的工具; 通常有两种形式:函数模板和类模板; 函数模板针对仅参数类型不同的函数; 类模板针对仅数据成员和成员函数类型不同的类。 使用模板的目的就是能够让程序原创 2016-01-20 09:13:20 · 363 阅读 · 0 评论 -
C++ 虚函数表解析
出处:http://blog.csdn.net/haoel/article/details/1948051 C++ 虚函数表解析前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变转载 2016-01-18 14:22:57 · 376 阅读 · 0 评论 -
C语言中整型溢出的危害
整型溢出有点老生常谈了,但似乎没有引起多少人的重视。整型溢出会有可能导致缓冲区溢出,缓冲区溢出会导致各种黑客攻击。在这里写下这篇文章,希望大家都了解一下整型溢出,编译器的行为,以及如何防范,以写出更安全的代码。什么是整型溢出C语言的整型问题相信大家并不陌生了。对于整型溢出,分为无符号整型溢出和有符号整型溢出。对于unsigned整型溢出,C的规范是有定义的——“溢出后的原创 2015-12-14 15:53:31 · 4246 阅读 · 1 评论 -
strtoul函数功能讲解与实现
strtoul()这个函数在驱动程序编写和内核漏洞exploit中经常会遇到。其函数原型如下:unsigned long strtoul(const char *nptr,char **endptr,int base )参数1:字符串起始地址参数2:返回字符串有效数字的结束地址,这也是为什么要用二级指针的原因。参数3:转换基数。当base=0,自动判断字符串的类型,并按原创 2015-11-17 10:18:18 · 3586 阅读 · 0 评论 -
extern 和 extern“C”
引言在用C++的项目源码中,经常会不可避免的会看到下面的代码:123456789#ifdef __cplusplusextern "C" {#endif /*...*/ #ifdef __cplusplus}原创 2015-11-23 11:26:45 · 440 阅读 · 0 评论 -
memmem()和strstr()函数
memmem是一个C库函数,用于在一块内存中寻找匹配另一块内存的内容的第一个位置,这个问题的起因是在内核漏洞exploit中有使用到。首先是一个比较直观的myMemmem(如果严格一点,长度应该是size_t型,而且要先判断alen和blen的大小关系,以及是否为正整数,这里都省了)int myMemmem(char * a, int alen, char * b, int blen)原创 2015-11-09 20:45:16 · 9475 阅读 · 0 评论 -
C++类型强制转换:static_cast const_cast reinterpret_cast dynamic_cast
数据类型转换:static_cast,const_cast等用法* C++提供了四种新的类型强制: static_cast const_cast reinterpret_cast dynamic_cast 1)staic_cast静态强制; 不能在无关的指针之间进行static类型强制 class CAnimal { //... public转载 2016-02-26 10:56:46 · 449 阅读 · 0 评论