
内存管理
文章平均质量分 66
李朝淋
艾生活,艾技术
展开
-
堆和栈的区别
一:内存的分配:1、栈(stack):内存由系统自动分配,自动释放,例如局部变量,分配的位置和大小无法主动控制2、堆(heap):由程序员主动的申请和释放,windows有new、malloc、virtualAlloc、GlobalAlloc等函数分配内存 3、全局区静态区:存放全局变量和静态变量4、字符串常量区:存放字符串常量5、代码区:存放二进制代码原创 2014-02-28 20:24:06 · 886 阅读 · 0 评论 -
C++复制对象时勿忘每一部分
确保两点: 1 复制所有的成员变量 2 调用所有基类的copy函数class Customer{public: explicit Customer(const tstring _name,const tstring _lastTransaction) :m_sName(_name), m_sLastTransaction(_lastTransaction) { Ou原创 2015-04-07 10:34:31 · 914 阅读 · 0 评论 -
Sizeof与Strlen的区别与联系
1、 sizeof:sizeof(...),是一个运算符,定义为unsigned in类型,其大小在编译期间决定的,参数可以是基本数据类型、数组、指针、对象、函数等。功能:获得保证能容纳实现所建立的最大对象的字节大小。 数组:数组所占空间字节数: 指针:存储该指针所用的空间大小 对象:该对象所占内存空间大小二、strlen: strlen(...)是原创 2014-10-18 23:17:27 · 823 阅读 · 0 评论 -
C++四种类型转换总结
const_cast,字面上理解就是去const属性。static_cast,命名上理解是静态类型转换。如int转换成char。dynamic_cast,命名上理解是动态类型转换。如子类和父类之间的多态类型转换。reinterpret_cast,仅仅重新解释类型,但没有进行二进制的转换。4种类型转换的格式,如:TYPE B = static_cast(TYPE)(a)。cons原创 2014-11-26 15:26:54 · 967 阅读 · 0 评论 -
关于stringstream的学习
库定义了三种类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。另外,每个类都有一个对应的宽字符集版本。简单起见,我主要以stringstream为中心,因为每个转换都要涉及到输入和输出操作。注意,使用string对象来代替字符数组。这样可以避免缓冲区溢出的危险。而且,传入参数和目标对象的类型被自动推导出来,即使使用了原创 2014-10-18 10:40:01 · 970 阅读 · 0 评论 -
排序算法总结
1 冒泡排序: void BubbleSort(int*p,int len){ //冒泡方式二:当某一次遍历没有发生任务数据交互时,说明已经排序好了 bool flag = true; int k = len; while (flag) { flag = false; for(int j=0 ; j<k-1 ; j++) { if原创 2014-11-18 19:24:39 · 686 阅读 · 0 评论 -
strcpy和memcpy的区别
strcpy和memcpy都是标准C库函数,它们有下面的特点。strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);返回值是char*是为了链式表达。memcpy提供了一般内存的复制。即memc原创 2014-09-29 23:18:40 · 2430 阅读 · 0 评论 -
InterLockedIncrement and InterLockedDecrement函数原理
实现数的原子性加减。什么是原子性的加减呢?举个例子:如果一个变量 Long value =0;首先说一下正常情况下的加减操作:value+=1;1:系统从Value的空间取出值,并动态生成一个空间来存储取出来的值;2:将取出来的值和1作加法,并且将和放回Value的空间覆盖掉原值。加法结束。如果此时有两个Thread ,分别记作threadA,threa原创 2014-10-25 21:47:54 · 1024 阅读 · 0 评论 -
分别用数组和链表实现堆
为了更好的理解栈的原理,本文分别用数组和链表实现了栈, 关于堆和栈的区别可参考文章:http://blog.youkuaiyun.com/oshirdey/article/details/20154627 工程下载地址:http://download.youkuaiyun.com/detail/oshirdey/7162855 1 数组实现栈: /*@ brife:数组实现栈类*原创 2014-04-08 20:40:09 · 1429 阅读 · 1 评论 -
字符串中字符查找函数:strchr,wcschr 及strrchr, wcsrchr函数
(1) char *strchr( const char *string, intc ); wchar_t *wcschr( const wchar_t *string, wchar_t c ); Find a character in a string. 查找一个字符串中首次出现的指定字符。 Return Value:Each of these func原创 2014-04-08 15:55:19 · 4895 阅读 · 0 评论 -
VC中release与debug的区别
工作中,经常会出现软件包发布版之后,会报一些很怪异的现象,在debug版没有什么问题,一到release版上面,有些功能点就会出现报错的现象;通过几次的检查Debug与Release不同的问题在刚开始编写代码时会经常发生,下面是几个避免的方面,即使没有这种问题也应注意一下: 1. 注意变量的初始化,尤其是指针变量,数组变量的初始化。 thing * search(thing原创 2014-03-23 11:32:35 · 725 阅读 · 0 评论 -
_countof、sizeof、strlen的区别和用法
1 countof:是系统定义的一个宏,求取元素的数组的元素个数2 sizeof:运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,获得保证能容纳实现所建立的最大对象的字节大小3 strlen:是一个函数,在运行时执行,返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历原创 2014-03-12 22:25:17 · 7628 阅读 · 0 评论 -
循环引用-智能指针的死穴之一
智能指针的实现思路也体现了C++基于对象的原则,对象应该为自己管理的资源负责,包括资源的分配与释放,而且最好将资源的释放与分配搞的自动化一点,典型的实现方法就是在构造函数里分配资源,在析构函数里释放资源,这样当其他程序员在使用这个对象时,该对象的资源问题几乎不用额外的操心,即优雅又方便 然后如此完美的东西,也有其不容忽视的地方,直接上代码:// share_ptr.cpp :原创 2015-04-08 11:27:00 · 1770 阅读 · 1 评论