当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: 有分 ......
    摘要: 这个答案选b吗?为什么不能选d呢? 1、 给出如下代码: class test{ private int m; public static void fun() { // some code... } } 如何使成员变量m 被函数fun()直接访问? a. 将private int m 改为protected int m b. 将private int m 改为 public int......


使用指针时是一定要new么

如题!  
  好象有时不new也可以用!  
  请解释一下new与不new有什么分别?  
  什么时候需要new(动态分配)?  
  谢谢!!1

NO.1   作者: greening

当然不是用指针就要用new。  
  用new是在堆上动态申请分配内存空间,用指针指向它,你才可以控制住它,用完了,你也要通过指针用delete回收掉,不然就会造成内存泄漏。

NO.2   作者: reinhard_liu

new   是把对象放入heap中  
  一般的是在stack中。  
   
  new   一般在动态使用中,就是运行时才构造对象  
  你可以  
  int   x;  
  cin   >>x;  
  char*   p=new   char[x];  
  但是不能直接  
  char   x[x];  
  这就是差别的较常见的一种  
  还有其他很多,慢慢体会吧。

NO.3   作者: allan33

指针是个特殊的变量,指针变量本身也占用4个字节的内存,用于存放指针本身的地址,至于指针指向什么地址,则看如何操作了。

NO.4   作者: messagebox

不一定  
  int   *p1   =   new   int(5)   ;   //指针本身在stack,   指向的整数在heap  
  int   a     =   5   ;  
  int   *p2   =   &a   ;//指针本身在stack,   指向的整数也在stack  
  只不过如果指针指向new出来的对象,你要负责释放对象  
  delete   p1   ;

NO.5   作者: allen1981813

vc环境下一定要.  
  要不就是野指针了.  
   
  以前BC++31   Dos下的时候没有考虑malloc,new.

NO.6   作者: hiys

当然不一定了,指针也可以指向实际对象的啊!  
 

NO.7   作者: alan118

new在堆上。  
  一般的指针在栈上。  
  这是决定性的区别。

NO.8   作者: woshinzg

new指的是动态分配,即在堆上分配内存。而如   int   a   =10   ;int   *   p   =   &a;  
  这时的指针p就不是指向堆上的了。

NO.9   作者: Linux2001

该结贴了

NO.10   作者: diabloqin

是啊是啊  
 

NO.11   作者: tianzhhy

只定义指针而不分配空间,那定义这个指针有什么意义啊。  
  程序中定义指针是通过指针来操作空间中的内容的,所以必须分配空间。


 ·vc 如何调用 vcl 类库生成的 dll    »显示摘要«
    摘要: 用 delphi 编写了一个dll文件(原有的,非本人编写),现在要在vc++中使用这个dll文件和调用其中的函数? 望各位达人,多多相助。 ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE