内存管理
阿修罗it
科学是神圣的
展开
-
内存对齐
在我们的程序中,数据结构还有变量等等都需要占有内存,在很多系统中,它都要求内存分配的时候要对齐,这样做的好处就是可以提高访问内存的速度。 我们还是先来看一段简单的程序:#includeusing namespace std;struct X1{int a;char c1;char c2;};struct X2{char c1;原创 2015-09-16 15:20:39 · 361 阅读 · 0 评论 -
C++内存对齐
什么是对齐? 在C/C++中,数据结构或类的成员变量,并不是按照它们的大小,一个一个紧凑地排列在空间上的。它们是按照一种特定的方法排列的,有可能在两个成员变量之间插入一个或个byte,以保证每个成员变量的起始位置是都是从某些特定的位置开始的。这就是对齐。单纯从语言上描述对齐有些枯燥难以理解,下文将配以例子说明C/C++是基于什么样的规则对齐的。为什么要对齐? 在大多数平台上,系统从原创 2015-09-15 21:01:49 · 463 阅读 · 0 评论 -
内存字节对齐
5分钟搞定内存字节对齐 收藏 写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的变量总长度要大,这是怎么回事呢?讲讲字节对齐吧./******************************分割线如果体系结构是不对齐的,A中的成员将会一个挨一个存储,从而sizeof(a)为11。显然对齐更浪费了空间。那么为什么要使用对齐呢?转载 2015-09-15 16:46:55 · 340 阅读 · 0 评论 -
零长度的数组巧用
零长度是指定义数组时,指定其长度为0(如int arr[0];),这样的数组不占用实际的空间,但能通过数组名访问到其指向的地址。在标准C和C++中,长度为0的数组是被禁止使用的。不过在GNU C中,存在一个非常奇怪的用法,那就是长度为0的数组,比如Array[0];很多人可能觉得不可思议,长度为0的数组是没有什么意义的,不过在这儿,它表示的完全是另外的一层意思,这个特性是不可移植的,所以,原创 2015-11-05 15:26:24 · 439 阅读 · 0 评论 -
互斥锁机制
锁机制,可以说是linux整个系统的精髓所在,linux内核都是围绕着同步在运转。在多进程和多线程编程中,锁起着极其重要的作用。我这里说的是互斥锁,其实是泛指linux中所有的锁机制。我在这里不讲如果创建锁,关于锁的创建,网上代码很多,我在这里就不多说了。我要谈一谈一个让所有刚刚接触锁机制的程序员都很困惑的问题:如何使用以及锁机制在程序中是如何运作的。 为什么要使用锁转载 2015-06-21 13:44:53 · 897 阅读 · 0 评论 -
memset
memsetmemset是计算机中C/C++语言函数。将s所指向的某一块内存中的前n个 字节的内容全部设置为ch指定的ASCII值, 第二个值为指定的内存地址,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向s的指针。中文名memset函数别 称char型初始化函数应用学科计算机适用领域原创 2015-09-17 17:38:02 · 584 阅读 · 0 评论 -
关于程序设计的内存分配问题
关于程序设计的内存分配问题 [摘 要]在大多数低层程序设计中,由于内存分配与内存对齐问题所带来的bug所占比重非常大。本文对内存分配中的分配空间类型、作用、方法、适用范围、优缺点以及内存对齐问题中的对齐原因、对齐规则等进行了详细的说明,并结合大量c语言代码进行阐述与分析。[关键词]内存分配;堆栈原理;内存对齐; 1 引言操作系统的内存分配问题与内存对齐问题对于低层转载 2015-09-16 16:24:50 · 628 阅读 · 0 评论 -
C++引用-运行时结构分析
#include using std::cout;using std::endl;float temp;float fun1(float r){temp = 3.14*r*r;return temp;}float&fun2(float r){temp = 3.14*r*r;return temp;}void main(){float原创 2015-10-11 11:12:47 · 296 阅读 · 0 评论