Chinaunix首页 | 论坛 | 博客
  • 博客访问: 180725
  • 博文数量: 38
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 372
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-05 19:39
文章分类

全部博文(38)

文章存档

2011年(1)

2010年(2)

2009年(2)

2008年(33)

我的朋友

分类: C/C++

2008-04-05 22:46:38

今天的工作可以先小结下:
1、在VC中获取int的最大值可以直接使用  类型名_MAX 例如,INT_MAX
   或者在头文件"limits.h"和"float.h"下,使用

numeric_limits::max()

numeric_limits::min()

(未验证!)

2、关于内存分配的问题,已经遇到几次了,郁闷!主要是两点:

   a、跨作用域的内存分配及使用的问题。在主函数(相对)中分配的内存可以在子函数中调用,但是子函数中分配的内存却不能为主函数所调用(似乎函数传递参数时是采用复制操作导致,而指针之间的复制工作要将里面的每个值都复制,和类的复制操作一样,这里就不多说了)。解决办法:

一方面,可以让主函数分配,子函数调用;另一方面,可以采用传引用的方式,比如

BOOL CKAveDlg::GetData(const char* FilePathname, double *&SwatchData)

在*号后面加&就ok了

  b、内存分配的问题,当在函数中调用:

double * SwatchData = new double;

时,若是在程序中调用SwatchData[i]之类的,后面使用

delete SwatchData;时就有错,会出现内存的问题。具体原因,是因为越界的问题,当new了之后,只给了一个头地址,如果数目大于1就越界了。因此必须事先获取改数组的大小。或者采用以下两种方法:一,使用vector,但是必须使用vector.pushback(i);二,随时关注内存大小,如果越界,重新分配内存。

阅读(871) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~