- 博客(7)
- 收藏
- 关注
转载 栈帧详解
一、 什么是栈帧? 什么是栈帧,相信很多从事C编程的童鞋还是没有搞明白,首先引用百度百科的经典解释:“栈帧也叫过程活动记录,是编译器用来实现过程/函数调用的一种数据结构。”。 实际上,可以简单理解为:栈帧就是存储在用户栈上的(当然内核栈同样适用)每一次函数调用涉及的相关信息的记录单元。也许这样感觉更复杂了,好吧,让我们从栈开始来理解什么是栈帧…二、 栈(用户栈和内核栈) 在大学学习
2017-10-31 20:09:45 948
转载 计算机语言的发展
转自知乎 在计算机还全都是些庞然大物的石器时代,写程序是靠「机器语言」。虽然名字叫做「语言」,实际上用到的就真的只有两个数字 0 和 1(考虑到三进制计算机[1]的话,也许还要算上 -1)而已。一些特定的数字组合,对于计算机来说有特定的意义,会让计算机做出特定的动作——其实我们甚至不该叫它们「数字」,因为它们并不代表任何「数量」,而是代表「模式」(pattern)的信号。这是什么意思呢?就好比你...
2017-10-26 22:17:40 194
原创 重载运算符
重载运算符参数数量一般和运算符作用的运算对象数量一样多,作为成员函数的重载运算符其显式参数数量比运算对象总数少一。 重载运算符本质是一次函数调用,求值顺序一般不会保留,所以不应该重载逻辑与、或以及逗号和取地址运算符(&& || , &)。 算术或位运算最好配套其符合赋值运算符。 成员or非成员: (1)成员:有些必须是,还有些改
2017-10-18 16:46:00 411
原创 C/C++中extern关键字详解
1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而不是C++的,
2017-10-16 13:34:12 138
原创 右值引用和移动语意
一、c++中的左值和右值 误区:左值位于等号左边,右值位于等号右边。 C++11中的定义:左值表达式表示的是一个对象的身份(在内存中的位置),而右值表达式表示的是对象的值(内容)。 左值和右值都是针对表达式而言的,左值是持久的,右值是短暂的:左值在表达式结束后仍然存在,右值在表达式结束后会被销毁。 区分左值和右值的方法:看能不能进行取地址操作,若能,则为左值,否则为右值。 注意:在需要右...
2017-10-10 15:22:57 529
原创 第十二章 动态内存
程序除静态内存和栈内存,还有自由空间(free store)or 堆(heap)。 使用动态内存容易造成内存泄漏:忘记delete new分配的空间。 share_ptr类:模板。最好用make_shared函数来分配内存。 shared_ptrint> p1 = make_sharedint> (); shared_ptrstring> p2 = make_sharedstri
2017-10-04 21:51:22 161
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人