堆和栈的问题 如果一个类中有一数组(1024字节),而这个类在堆上被分配,请问类中数组是在栈上还是在堆上被分配的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没有new 就是在栈上 有new 就是堆上 对象如果是new出来的 这个1024的数组就在堆上 不是new出来的 就在栈上 那么下面这两个类在分配空间上有区别吗class CTest{public: char buf[1024];};class CTest2{public: CTest2() { buf=new char[1024]; } char * buf;};void fun(){ CTest * p1=new CTest; CTest2 * p2=new CTest2;}; 有区别,第二个对象他的程序是一个指向char的指针,占4个字节。在类的构造函数中再分配内存。第一个对象在分配时,就会分配1024空间(对象自身包含1024的空间)。你用new来建立对象,他们都分配在堆里。 加入新文件 CStatic实现动画效果,请大家帮忙看一眼,问了很久没有答案 关于图形拖动的问题,急!!!在线等!分数不够可以再加! 新学vc,请大家推荐一本好书 如何在ie中执行一个*.dll程序并返回一个网页。 如何将DWORD型的TIME值转成 HH:MM:SS 样式的字符串? 谁有SA-Fileup组件的正式版?(持续加分!!!) ◆◆◆◆◆BSTR怎么转换成字符串◆◆◆◆◆ win98做服务器,win2000做客户机(在工作组中)可以实现吗? 如何编写16位的DLL? CTreeCtrl子节点单击事件如何获取? 请大家帮我猜下
有new 就是堆上
不是new出来的 就在栈上
class CTest
{
public:
char buf[1024];
};class CTest2
{
public:
CTest2() { buf=new char[1024]; }
char * buf;
};void fun()
{
CTest * p1=new CTest;
CTest2 * p2=new CTest2;
};
第一个对象在分配时,就会分配1024空间(对象自身包含1024的空间)。
你用new来建立对象,他们都分配在堆里。