CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

atype *pt=new atype(参数列表) 后,我怎么确定是否真的内存分配成功了?

楼主archy(archy)2001-08-23 19:16:35 在 VC/MFC / 基础类 提问

如果用assert(pt!=NULL),那如果客户在用时恰好内存分配有问题就assert失败退出了怎么办?  
   
  我是这样用的  
  atype   *pt=new   atype(参数列表)   ;  
  if(pt!=NULL)   //先判断一下  
  {...  
    //正常执行  
    ...    
  }  
  else  
  {    
    //可是这里else该怎样呢?仅仅是给出确切的出错提示吗?那在客户哪里不是程序停了吗?  
   
  }  
   
  大家有好的解决方案吗,后生诚心请教。  
  另:BOOL和bool的区别,程序开始时const   int   n=3;   和const   n=3;的区别;  
          NULL就是0吗?  
  非常感谢!! 问题点数:40、回复次数:10Top

1 楼xiezhsh(雪中行)回复于 2001-08-23 19:28:17 得分 10

1.       bool在C++里是占用1字节,而BOOL是int类型,int类型的大小是视具体环境而定的;所以来说:false/true只占用1个字节,而TRUE/FALSE视具体环境而言,以下是BOOL在windef.h中的定义:typedef   int   BOOL;  
  2.   NULL   就是0  
     看windef.h中NULL的定义:  
  #ifndef   NULL  
  #ifdef   __cplusplus//这个是指示是用C++来编译程序  
  #define   NULL   0  
  #else  
  #define   NULL   ((void   *)0)  
  #endif  
  #endif  
   
   
   
  Top

2 楼magicblue(小飞侠)回复于 2001-08-23 19:43:49 得分 7

不同的操作系统会使NULL取不同的值。NULL为空,不一定是0。在PC的BC与VC中NULL都取0,但考虑到移植,NULL不应认为是0Top

3 楼Great_Bug()回复于 2001-08-23 20:16:16 得分 7

这涉及软件的最低资源需求的问题。。。。用户的硬件如果不能提供足够资源,不是你的错。。。  
  但你的程序不应当有超出常规的资源需求,这个问题就随你的任务而异,你的程序结构什么的也有影响。。。。Top

4 楼gigix(透明)回复于 2001-08-23 20:24:04 得分 8

看看Effective   C++的ITEM   7,那里有详解。  
  new分配失败的时候应该抛出一个异常,却不一定把指针置为NULL。Top

5 楼archy(archy)回复于 2001-08-23 20:45:40 得分 0

我是说假如我new了一个对象,这时客户的内存正好不够了(总数够,但都是碎片,于是退出)。会有这种情况吗?Top

6 楼archy(archy)回复于 2001-08-24 00:31:20 得分 0

急呀Top

7 楼vcsongs(vcsongs)回复于 2001-08-24 00:38:49 得分 7

一般如果不是写重要的长时间运行的服务器软件,   不必太注重这方面的内容的.   因为现在机器小内存/硬盘的很少了...    
   
  如果非常要处理这个.   可以在程序初始化的时候分配大块内存.   自己管理之...    
   
  内存访问尽量不要多次小量分配.   容易形成碎片...    
   
   
   
  Top

8 楼fz_zhou(vcfan)回复于 2001-08-24 00:42:05 得分 1

有返回值的!Top

9 楼xiezhsh(雪中行)回复于 2001-08-24 18:55:03 得分 0

给俺加分!!!呵呵..........Top

10 楼archy(archy)回复于 2001-08-25 12:20:46 得分 0

还有更好的回答吗,我还是怕客户使用时出问题,不是因为内存不够Top

相关问题

  • MAKEINTRESOURCE 可用参数列表
  • 可变参数列表的问题》。。
  • 什么叫初始化参数列表?
  • ADO怎么取存储过程的参数列表及参数类型????
  • 用API:ADO怎么取存储过程的参数列表及参数类型????
  • 用指针参数申请内存,为什么有错?
  • 指针参数是如何传递内存的?
  • ReadProcessMemory中内存地址参数为变量怎么办?
  • 记录虚拟内存的参数是什么?
  • 编辑时的参数列表问题!请教.

关键词

  • c++
  • 内存
  • 客户
  • null
  • atype
  • 分配
  • 程序
  • pt
  • bool
  • 资源

得分解答快速导航

  • 帖主:archy
  • xiezhsh
  • magicblue
  • Great_Bug
  • gigix
  • vcsongs
  • fz_zhou

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo