现在位置: 首页 > 自动控制 > 工业·编程 > 文章
2012-11-24 23:17 工业·编程 ⁄ 共 19246字 暂无评论
一、前言 从事自动化测试平台开发的编程实践中,遭遇了几个程序崩溃问题,解决它们颇费了不少心思,解决过程中的曲折和彻夜的辗转反侧却历历在目,一直寻思写点东西,为这段难忘的经历留点纪念,总结惨痛的教训带来的经验,以期通过自己的经历为他人和自己带来福祉:写出更高质量的程序;   由于 C 和 C++ 这两种语言血缘非常近,文本亦对 C 编程语言有借鉴作用;   二、C++ 崩溃分类 一切的偶然并非偶然 在...
阅读全文
2012-11-24 23:15 工业·编程 ⁄ 共 8520字 暂无评论
1.内存问题的原因及分类 在C/C++程序中,有关内存使用的问题是最难发现和解决的。这些问题可能导致程序莫名其妙地停止、崩溃,或者不断消耗内存直至资源耗尽。由于C/C++语言本身的特质和历史原因,程序员使用内存需要注意的事项较多,而且语言本身也不提供类似java的垃圾清理机制。编程人员使用一定的工具来查找和调试内存相关问题是十分必要的。 总的说来,与内存有关的问题可以分成两类:内存访问错误和内存使用错误。内存...
阅读全文
2012-11-24 23:13 工业·编程 ⁄ 共 8963字 暂无评论
程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。 1、内存分配方式 内存分配方式有三种: (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 (2...
阅读全文
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种的用法更常见一些。 以上的表达方式非常简洁,但...
阅读全文
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...
阅读全文
2012-11-24 23:06 工业·编程 ⁄ 共 484字 暂无评论
最近拿到一段程序,还是让俺DEBUG,命苦啊,是栈溢出,编译链接成功,运行时报错。这位MM在一彩色图片多分辨率处理程序中将一副1024*1024大小的彩色图片的RGB分量存入三个数组,数组在栈上分配的,即形如int ImageDataR[1024][1024] 这种形式,然后呢,你猜,栈溢出程序挂了(说明一下,这个程序只处理大小为1024*1024大小的图片,据说是统一的图片大小和格式要求)。 能不挂吗?这样一个数组的大小是4Byte*1024*1024=4MB,R,G,B...
阅读全文
一、显示对话框: 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(...
阅读全文
 先说个题外话:早些年我学C程序设计时,写过一段解释硬盘MBR分区表的代码,对着磁盘编辑器怎么看,怎么对,可一执行,结果就错了。当时调试也不太会,又根本没听过结构体对齐这一说,所以,问题解决不了,好几天都十分纠结。后来万般无奈请教一个朋友,才获悉可能是结构体对齐的事,一查、一改,果真如此。     问题是解决了,可网上的资料多数只提到内存对齐是如何做的,却鲜有提及为什么这样做(即使提,...
阅读全文
2012-11-24 23:00 工业·编程 ⁄ 共 2303字 暂无评论
    用过Visual Studio 2010的同学都知道,VS2010和VC 6.0以及其他VisualStudio版本不同,VS2010中C++的目录我们只能在单独的项目中配置。所有的项目有一个总的C++头文件、库文件目录配置。      如果我们要添加一个很常用的Include目录,而我们又非得每个项目中自己动手填写,是不是很费劲呢?所以我们找到了一个很好的解决方案,使得一次配置目录,在以后的工程中不必自己填写了。  ...
阅读全文
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 ...
阅读全文