//PngFile.h
class CPngFile
{
public:
CPngFile()
{
pchar = new char[1000];
nCount = 100;
}
prirate:
char *pchar;
int nCount;
}void main()
{
CPngFile *pCPng = new CPngFile ;
}
--------------------------------------------------------------------------------------
问题:
nCount 是放在栈内存还是堆内存中?如果是栈内存,哪CPngFile *pCPng = new CPngFile不是分配一块堆内存吗?如果是在堆内存中,int nCount这个不是一般是分配到栈内存吗?
class CPngFile
{
public:
CPngFile()
{
pchar = new char[1000];
nCount = 100;
}
prirate:
char *pchar;
int nCount;
}void main()
{
CPngFile *pCPng = new CPngFile ;
}
--------------------------------------------------------------------------------------
问题:
nCount 是放在栈内存还是堆内存中?如果是栈内存,哪CPngFile *pCPng = new CPngFile不是分配一块堆内存吗?如果是在堆内存中,int nCount这个不是一般是分配到栈内存吗?
一个类的实例中只有数据和虚函数表的指针.如果这个类,你是使用 CPngFile pCPng;
那么这些数据应该是分在栈内的.你new出一块内存.这肯定是分在堆上的.这块内存就包括了int nCount这个成员.
但是,你的这个类对象是在堆区分配的,其内部的成员也应该是在堆区的。
没太懂你的意思
比如:声明 Cobject aa; 那么不用调用 aa.create就可以直接访问aa了。如果new一个类对象,则内存是在堆上分配的。但指向内存的指针pCPng还是在栈上的。