上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 20 下一页

C内存对齐详解

摘要: 一、什么是对齐,以及为什么要对齐:1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。2. 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。其他平台可能没有这种情况, 但是最常见的是如果不按照适合其平台的要求对数据存放进行对齐,会在存取效率上带来损失。比如有些平台每次读都是从偶地址开始,如果一个int型(假设为 32位)如果存放 阅读全文
posted @ 2011-01-17 11:24 白开水易拉罐 阅读(457) 评论(3) 推荐(1) 编辑

#pragam预处理指令详解

摘要: FROM: #pragam预处理指令详解在所有的预处理指令中,#pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 其格式一般为: #pragma para 其中para为参数,下面来看一些常用的参数。 (1)message 参数 message参数是我最喜欢的一个参数,它能够在编译信息输出窗口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为 阅读全文
posted @ 2011-01-17 10:57 白开水易拉罐 阅读(902) 评论(0) 推荐(0) 编辑

如何使用Dev C++调试(debug)c程序

摘要: 方法1:(已验证)在“工具”-》编译选项-》"Addfollowingcommandswhencallingcomplier"下面的编辑框里加上: -g3然后在下面的"Addthesecommandstothelinkercommandline"下的编辑框上加上: -g3转到programs页,把gcc行修改为:gcc.exe-D__DEBUG__,把g++行修改为: g++.exe-D__DEBUG__,点击ok。重新编译,就能调试了。 方法2:(本人未验证)在dev c++ 环境中,写程序的时候,写了一个类,但是有点问题,想调试一下,但是调试的时候,老出现这个问题your pro 阅读全文
posted @ 2011-01-14 16:04 白开水易拉罐 阅读(14653) 评论(5) 推荐(2) 编辑

sizeof(结构体)和内存对齐

摘要: 有的时候,在脑海中停顿了很久的“显而易见”的东西,其实根本上就是错误的。就拿下面的问题来看:使用sizeof(T),将得到什么样的答案呢?要是以前,想都不用想,在32位机中,int是4个字节,char是1个字节,所以T一共是5个字节。实践出真知,在VC6中测试了下,答案确实8个字节。哎,反正受伤的总是我,我已经有点麻木了,还是老老实实的接受吧!为什么答案和自己想象的有出入呢?这里将引入内存对齐这个概念。许多实际的计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址的值是某个数k(通常它为4或8)的倍数,这就是所谓的内存对齐,而这个k则被称为该数据类型的对齐模数(alig 阅读全文
posted @ 2011-01-13 14:25 白开水易拉罐 阅读(516) 评论(0) 推荐(1) 编辑

linux 驱动程序 tasklet 笔记 [ZT]

摘要: 原文:http://www.21cstar.com/dhome/2007/0403/content_1056_2.htmlTasklet机制是一种较为特殊的软中断。Tasklet一词的原意是“小片任务”的意思,这里是指一小段可执行的代码,且通常以函数的形式出现。软中断向量HI_SOFTIRQ和TASKLET_SOFTIRQ均是用tasklet机制来实现的。从某种程度上讲,tasklet机制是Linux内核对BH机制的一种扩展。在2.4内核引入了softirq机制后,原有的BH机制正是通过tasklet机制这个桥梁来纳入softirq机制的整体框架中的。正是由于这种历史的延伸关系,使得taskl 阅读全文
posted @ 2011-01-05 14:48 白开水易拉罐 阅读(384) 评论(0) 推荐(0) 编辑
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 20 下一页