2012-11-24 23:17
⁄ 工业·编程
⁄ 共 19246字
一、前言
从事自动化测试平台开发的编程实践中,遭遇了几个程序崩溃问题,解决它们颇费了不少心思,解决过程中的曲折和彻夜的辗转反侧却历历在目,一直寻思写点东西,为这段难忘的经历留点纪念,总结惨痛的教训带来的经验,以期通过自己的经历为他人和自己带来福祉:写出更高质量的程序;
由于 C 和 C++ 这两种语言血缘非常近,文本亦对 C 编程语言有借鉴作用;
二、C++ 崩溃分类
一切的偶然并非偶然
在...
c++, 问题阅读全文
2012-11-24 23:15
⁄ 工业·编程
⁄ 共 8520字
1.内存问题的原因及分类
在C/C++程序中,有关内存使用的问题是最难发现和解决的。这些问题可能导致程序莫名其妙地停止、崩溃,或者不断消耗内存直至资源耗尽。由于C/C++语言本身的特质和历史原因,程序员使用内存需要注意的事项较多,而且语言本身也不提供类似java的垃圾清理机制。编程人员使用一定的工具来查找和调试内存相关问题是十分必要的。
总的说来,与内存有关的问题可以分成两类:内存访问错误和内存使用错误。内存...
c++, 内存阅读全文
2012-11-24 23:13
⁄ 工业·编程
⁄ 共 8963字
程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。
1、内存分配方式
内存分配方式有三种:
(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。
(2...
c++, 内存阅读全文
2012-11-24 23:11
⁄ 工业·编程
⁄ 共 5370字
有的时候,我们可以使用显式转换(又称强制类型转换),明确地告知编译器:这种转换正是程序所期望的,请不要再出现啰嗦的警告,如下:
short s2 = (short)100000; //ok
显示转换的语法如下:
(类型)表达式; 类型(表达式); (类型)(表达式);
也就是说,如下3种形式都可以:
s2 = (short)100000; //ok s2 = short(100000); //ok s2 = (short)(100000); //ok
一般来说,第1种的用法更常见一些。
以上的表达方式非常简洁,但...
c++阅读全文
2012-11-24 23:08
⁄ 工业·编程
⁄ 共 1973字
按位操作符
按位操作符用来操作整数基本数据类型中的单个bit,即二进制位。按位操作符对两个参数中对应的位执进行布尔代数运算。
位操作符
Operator
Use
Operation
&
op1 & op2
运算op1和op2;如果op1和op2都是布尔值,而且都等于true,那么返回true,否则返回false;如果op1和op2都是数字,那么执行位与操作
|
op1 | op2
算op1和op2;如果op1和op2都是布尔值,而且有一个等于true,那么返回tru...
c++阅读全文
2012-11-24 23:06
⁄ 工业·编程
⁄ 共 484字
最近拿到一段程序,还是让俺DEBUG,命苦啊,是栈溢出,编译链接成功,运行时报错。这位MM在一彩色图片多分辨率处理程序中将一副1024*1024大小的彩色图片的RGB分量存入三个数组,数组在栈上分配的,即形如int ImageDataR[1024][1024] 这种形式,然后呢,你猜,栈溢出程序挂了(说明一下,这个程序只处理大小为1024*1024大小的图片,据说是统一的图片大小和格式要求)。
能不挂吗?这样一个数组的大小是4Byte*1024*1024=4MB,R,G,B...
内存泄漏阅读全文
2012-11-24 23:03
⁄ 工业·编程
⁄ 共 5139字
一、显示对话框:
1.显示模式对话框:
CDialogDemo dlg; dlg.DoModal();
2.显示非模式对话框:
CDialogDemo *dlg=new CDialogDemo(this); dlg->Create(IDD_GENERAL_CONTROL); dlg->ShowWindow(SW_SHOW);
二、关闭对话框:
1.CDialog::OnOK();
2.CDialog::DestoryWindow();
3.CDialog::EndDialog(0);
注:CDialog::CloseWindow(); 仅仅是最小化对话框 PostMessage(...
MFC阅读全文
2012-11-24 23:02
⁄ 工业·编程
⁄ 共 4069字
先说个题外话:早些年我学C程序设计时,写过一段解释硬盘MBR分区表的代码,对着磁盘编辑器怎么看,怎么对,可一执行,结果就错了。当时调试也不太会,又根本没听过结构体对齐这一说,所以,问题解决不了,好几天都十分纠结。后来万般无奈请教一个朋友,才获悉可能是结构体对齐的事,一查、一改,果真如此。
问题是解决了,可网上的资料多数只提到内存对齐是如何做的,却鲜有提及为什么这样做(即使提,...
c++阅读全文
2012-11-24 23:00
⁄ 工业·编程
⁄ 共 2303字
用过Visual Studio 2010的同学都知道,VS2010和VC 6.0以及其他VisualStudio版本不同,VS2010中C++的目录我们只能在单独的项目中配置。所有的项目有一个总的C++头文件、库文件目录配置。 如果我们要添加一个很常用的Include目录,而我们又非得每个项目中自己动手填写,是不是很费劲呢?所以我们找到了一个很好的解决方案,使得一次配置目录,在以后的工程中不必自己填写了。 ...
VC阅读全文
2012-11-24 22:58
⁄ 工业·编程
⁄ 共 1036字
要了解vc中使用#include命令包含头文件所搜寻的路径,必须先了解vc中的几种路径:
1. 系统路径
系统路径在vc中是"Tools->Options->Directories"中"Include files"指定的路径。
打开此对话框会发现默认有这几条路径:
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE
...
VC阅读全文