随笔分类 - C++
摘要:参考资料:1. 《深入理解计算机系统》 Chapter 3 程序的机器级表示 3.9.32. 百度百科http://baike.baidu.cn/view/4786260.htm3. 内存对齐的原理,作用…… http://lc7cl.iteye.com/blog/12504814. C/C++内存分配与内存对齐全面探讨(比较详细,没看完) http://blog.csdn.net/cuibo1123/article/details/25474425. 一篇讲对齐比较好的文章 http://old.uplook.cn/blog/10/109320/6. C++内存对齐详细使用指南(不建议一开始
阅读全文
摘要:1. __cdecl__cdecl 是C Declaration的缩写(declaration,声明),表示C语言默认的函数调用方法:所有参数从右到左依次入栈,由调用者负责把参数压入栈,最后也是由调用者负责清除栈的内容,一般来说,这是 C/C++ 的默认调用函数的规则,MS VC 编译器采用的规则则是这种规则2. __stdcall_stdcall 是StandardCall的缩写,是C++的标准调用方式:所有参数从右到左依次入栈,由调用者负责把参数压入栈,最后由被调用者负责清除栈的内容,Windows API 所采用的函数调用规则则是这种规则另外,采用 __cdecl 和 __stdcall
阅读全文
摘要:基础知识:堆栈是一种简单的数据结构,是一种只允许在其一端进行插入或删除的线性表。允许插入或删除操作的一端称为栈顶,另一端称为栈底,对堆栈的插入和删除操作被称为入栈和出栈。有一组CPU指令可以实现对进程的内存实现堆栈访问。其中,POP指令实现出栈操作,PUSH指令实现入栈操作。CPU的ESP寄存器存放当前线程的栈顶指针,EBP寄存器中保存当前线程的栈底指针。CPU的EIP寄存器存放下一个CPU指令存放的内存地址,当CPU执行完当前的指令后,从EIP寄存器中读取下一条指令的内存地址,然后继续执行。 接触过编程的人都知道,高级语言都能通过变量名来访问内存中的数据。那么这些变量在内存中是如何存放的..
阅读全文
摘要:描述已知顺序表L递增有序,编写一个算法,将X插入到线性表的适当位置上,以保持线性表的有序性!样例输入512 23 34 45 5630样例输出12 23 30 34 45 56 以前链表的写法都是面向过程的,而面向对象的写法使得程序更具简洁性,当然,更重要的是OOP的思想 1 //: 在顺序表中插入元素 2 #include <iostream> 3 4 using namespace std; 5 6 class MyClass { 7 public: 8 struct Link { 9 int data; 10 Link* next; 11 ...
阅读全文
摘要:C++内存分配的方式大体上可以归纳为3种1) 从静态存储区中分配:内存在编译时就已经分配好,这块内存在程序的整个运行期间都存在,例如全局变量,static变量2) 在栈上分配:执行函数时,函数内局部变量的存储单元都可在栈上创建,函数执行结束时,这些存储单元自动被释放3) 在堆上分配:也称为动态内存分配,程序在运行的时候用malloc或new申请任意多少的内存,除非程序运行结束或者程序员自己用free或delete释放动态内存,否则这块动态内存一直存在多态性是指为一个函数名关联多种含义的能力,即同一种调用方式可以映像到不同的函数。这种把函数的调用与适当的函数体对应的活动又称为绑定(binding
阅读全文
摘要:有多少个new就有多少个delete二维动态数组的写法首先开辟第一维的空间,第一维是char型的指针char **s = new char*[182];在第一维的基础上,开辟第二维的空间,第二维是不定长度的char型s[nCounts] = new char[str.length()];释放二维动态数组时,规则是由内到外的,先释放第二维的空间,最后再释放第一维的空间for (int i = 0; i < nCounts; ++i) {delete[] s[i]; // delete[col] s[i];s[i] = NULL;}delete[] s; // delete[row] s;.
阅读全文
摘要:转载自 http://dev.yesky.com/460/2379960.shtml在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。 自由存储区,就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。 全局/静...
阅读全文
摘要:转载自51CTO.com http://developer.51cto.com/art/201107/276154.htm我们都知道,内存基本上分为静态存储区、堆区和栈区三大部分。本文介绍的是C++中的内存分配的问题,希望对你有帮助,一起来看。程序运行时,特别要注意的是内存的分配。下面介绍C++程序设计中的内存分配。一、内存基本构成可编程内存在基本上分为这样的几大部分:静态存储区、堆区和栈区。他们的功能不同,对他们使用方式也就不同。静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。栈区:在执行函数时,函数内局部变量的存...
阅读全文

浙公网安备 33010602011771号