2010年12月20日

摘要: 相同点:都可用于申请动态内存和释放内存不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加malloc/free。(2)在用法上也有所不同。函数malloc 的原型如下:void * malloc(size_t size);用malloc 申请一块长度为lengt 阅读全文
posted @ 2010-12-20 17:54 Zhiqiang.Chen 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。其格式一般为: #Pragma Para 其中Para 为参数,下面来看一些常用的参数。 (1)message 参数。 Message 参数是我最喜欢的一个参数,它能够在编译信息输出窗口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为: #Pragma message(“. 阅读全文
posted @ 2010-12-20 17:53 Zhiqiang.Chen 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 一、Debug和Release编译方式的本质区别Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。Debug和Release的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd/Fo,但区别并不重要,通常他们也不会引起Release版错误,在此不讨论)Debug版本:/MDd/MLd或/MTd使用Debugruntimelibrary(调试版本的运行时刻函数库)/Od关闭优化开关/D"_DEBUG& 阅读全文
posted @ 2010-12-20 17:50 Zhiqiang.Chen 阅读(477) 评论(0) 推荐(0) 编辑
摘要: 在VC程序中使用调试语句为了更好地对程序调试,可以使用如下方法:使用断言、使用跟踪语句、使用异常和返回值。一、断言1、基本概念 断言是一种让错误在运行时候自我暴露的简单有效实用的技术。它们帮助你较早较轻易地发现错误,使得整个调试过程效率更高。 断言是布尔调试语句,用来检测在程序正常运行的时候某一个条件的值是否总为真,它能让错误在运行时刻暴露在程序员面前。使用断言的最大好处在于,能在更解决错误的发源地的地方发现错误。断言具有以下特征:.断言是用来发现运行时刻错误的,发现的错误是关于程序实现方面的。.断言中的布尔表达式显示的是某个对象或者状态的有效性而不是正确性。.断言在条件编译后只存在于调试.. 阅读全文
posted @ 2010-12-20 17:44 Zhiqiang.Chen 阅读(407) 评论(0) 推荐(0) 编辑
摘要: 使用VisualC++调试器调试一、调试版本与发布版本 有时程序能在调试版本运行但不能运行于发布版本,反之也有可能。一般说来,一个发布版本意味着某些类型的优化,而一个调试版本则没有优化。下面我们来看看它们的区别:1、特别针对调试版本的编译选项(1)/MDd,/MLd或者/MTd 调试版本的运行时刻库有调试符号,使用了调试堆,调试堆的目的是发现内存破坏和内存泄漏,并且向用户报告源代码的哪个地方出了问题。特性:.调试版本的运行时刻库对内存的分配作了跟踪,允许用户检查内存泄漏。.在刚分配的内存里写上0xCD的字节模式,用0xCD来填充刚分配的内存,有助于发现数据未被初始化的错误。.在被释放的内存.. 阅读全文
posted @ 2010-12-20 17:41 Zhiqiang.Chen 阅读(974) 评论(0) 推荐(0) 编辑
摘要: 理解内核对象,先要了解什么是内核。内核可以理解为一个人的大脑,我们知道大脑能控制一个人的行为,但是大脑并不是直接控制,而是是通过神经来传递命令,内核对象就是操作系统的神经。内核对象实际上就是一些只有内核才能访问的内存数据,内核通过访问这些数据来完成对系统的控制,上层可以看到内核对象,并执行对它的一些操作,但是却无法访问这些数据。进程、线程、作业等都是内核对象,你可以操作它们却不能访问它们。 阅读全文
posted @ 2010-12-20 17:33 Zhiqiang.Chen 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。2.sizeof是算符,strlen是函数。3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''/0''结尾的。4.数组做sizeof的参数不退化,传递给strlen就退化为指针了。5.大部分编译程序在编译的时候就把sizeof计算过了是类型或是变量的长度这就是sizeof(x)可以用来定义数组维数的原因charstr[20]="0123456789"; // 阅读全文
posted @ 2010-12-20 17:21 Zhiqiang.Chen 阅读(269) 评论(0) 推荐(0) 编辑
摘要: char* s1 = "hello"; char s2[] = "world";相同点:都是表示一个字符串。不同点:操作系统对它们在内存中的存储方式作了不同的处理。下面是测试代码:#include <iostream.h>int main(){ char *S1 = "Hello"; char S2[] = "World";// *(S1+2) = 'x'; // 执行时出错。 *(S2+5) = 'x'; // 执行时正确。 *(S2+6) = '/0' 阅读全文
posted @ 2010-12-20 17:07 Zhiqiang.Chen 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 前段时间碰到一件很奇怪的事情,在ListView中使用ImageView能将图片显示出来,而在widget中使用ImageView却显示不出来,刚开始以为是widget的布局有问题,后来确定不是widget布局的问题,没办法,尝试着对源数据中的图片大小进行裁剪缩小,图片终于在widget的ImageView中显示了出来,猜测是widget对ImageView有影响。 阅读全文
posted @ 2010-12-20 16:48 Zhiqiang.Chen 阅读(370) 评论(0) 推荐(0) 编辑
摘要: 一、安装Cygwin软件;二、下载git软件;三、安装git-1.7.3.2.tar.bz2$ tar jxvf git-1.7.3.2.tar.bz2$ make install四、安装Repo, 在home目录创建bin目录,然后获取Repo并授于它执行的权限;$ cd ~$ mkdir bin$ curlhttp://android.git.kernel.org/repo>~/bin/repo$ chmod a+x ~/bin/repo接下来把bin目录加入$PATH:$ export PATH=$HOME/bin:$PATH五、在home目录创建mydroid目录用来存放Andr 阅读全文
posted @ 2010-12-20 16:44 Zhiqiang.Chen 阅读(112) 评论(0) 推荐(0) 编辑

导航