今天参加了入职前的小小的培训,培训中老师讲到了关于内存对齐的只是,以前接触过,但是没有深究,今天老师讲了,回来便查了查资料,下面便是我对内存对齐的理解。
内存对齐对于大部分的软件工程师来说都可以说是透明的,内存对齐应该是编译器去管理的,C语言的特点就是强大灵活,他允许你对内存进行操作。如果你想对深层次的更加底层的东西要加以理解,就必须对内存对齐要有一定的了解。
首先是为什么我们需要对内存对齐:...
分类:
其他好文 时间:
2014-12-15 21:46:21
阅读次数:
170
c/c++深入篇之内存分配与内存对齐的探讨
在大多数低层程序设计中,由于内存分配与内存对齐问题所带来的bug所占比重非常大。本文对内存分配中的分配空间类型、作用、方法、适用范围、优缺点以及内存对齐问题中的对齐原因、对齐规则等进行了详细的说明,并结合大量c语言代码进行阐述与分析。...
分类:
编程语言 时间:
2014-12-15 20:28:05
阅读次数:
306
这篇说说如何计算Java对象大小的方法。之前在聊聊高并发(四)Java对象的表示模型和运行时内存表示 这篇中已经说了Java对象的内存表示模型是Oop-Klass模型。
普通对象的结构如下,按64位机器的长度计算
1. 对象头(_mark), 8个字节
2. Oop指针,如果是32G内存以下的,默认开启对象指针压缩,4个字节
3. 数据区
4.Padding(内存对齐),按照8的倍数...
分类:
编程语言 时间:
2014-12-09 15:50:42
阅读次数:
316
1、结构体的声明: 1)struct Student{ int stu_id; char name[25] int age; char sex; }; Student student1, student2; 2)struct Student{ int stu_...
分类:
其他好文 时间:
2014-12-04 13:36:00
阅读次数:
130
// 111.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include
using namespace std;
/*
编译器内存字节对齐的原则
1. 数据类型的自身对齐值
数据类型的自身对齐值:其在内存中所占的字节数,如在3...
分类:
其他好文 时间:
2014-12-02 10:40:57
阅读次数:
124
#pragma pack可以用来指定C++数据结构的成员变量的内存对齐数值(可选值为1,2,4,8,16)。
本文主要是强调在你的头文件中使用pack指令要配对使用,以避免意外影响项目中其他源文件的结构成员的内存对齐
分类:
编程语言 时间:
2014-11-28 11:39:48
阅读次数:
276
为了速度和正确性,请对齐你的数据. 概述:对于所有直接操作内存的程序员来说,数据对齐都是很重要的问题.数据对齐对你的程序的表现甚至能否正常运行都会产生影响.就像本文章阐述的一样,理解了对齐的本质还能够解释一些处理器的"奇怪的"行为.内存存取粒度程序员通常倾向于认为内存就像一个字节数组.在C及其衍生语...
分类:
其他好文 时间:
2014-11-20 15:04:45
阅读次数:
418
做地址对齐的代码:#define _INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) ) //为了满足需要内存对齐的系统这段代码做的事情就是,给定一个变量n,算出这个变量对齐到某个字长(整型的字节数)整数倍的字节数。这段代码有些难以...
分类:
其他好文 时间:
2014-11-20 15:04:20
阅读次数:
218
class A{};sizeof(A)得到的不是0而是1,因为我们在申明类型实例的时候,它必须在内存中占有一定的空间,否则无法使用这些实例,具体占用多少内存由编译器决定,上面是我在VS2008上得出的结果。class A{char a;};这个sizeof出来的结果是1,不是4,在只有一个char型...
分类:
编程语言 时间:
2014-11-18 00:20:36
阅读次数:
354
这个内存对齐问题,居然影响到了sizeof(struct)的结果值。突然想到了之前写的一个API库里,有个API是向后台服务程序发送socket请求。其中的socket数据包是一个结构体。在发送socket之前,会检测数据的长度;服务端接收到数据后也会检测长度。如果说内存对齐问题影响到了结构体的si...
分类:
编程语言 时间:
2014-11-12 22:36:33
阅读次数:
564