一个小问题
typedef struct CStashTag {
int size; // Size of each space
int quantity; // Number of storage spaces
int next; // Next empty space
// Dynamically allocated array of bytes:
unsigned char* storage;为什么说这是动态分配的呢?
} CStash;
而且在后面的函数中,还有语句
CStash* s;
delete [](s->storage);
真搞不懂,不是只能释放用new语句建立的动态变量吗?
问题点数:50、回复次数:5Top
1 楼lemon520(喷血)回复于 2003-10-03 13:26:26 得分 20
CStash* s; //s不用初始化或是赋值吗?那delete [](s->storage); 肯定错了!
一般的用法是 CStash* s = new CStashTop
2 楼iawk(王卡)回复于 2003-10-03 13:45:44 得分 0
是这样的,在主函数中定义CStash intCStash;然后执行f(&intStash)
调用函数f(CStash* s)
在该函数中有delete[](s->storage)这样的语句.
还有就是:为什么不能CStash* s呢?就好象int* p一样?Top
3 楼javaman8(javaman)回复于 2003-10-03 14:08:25 得分 10
不对滴,少了s=new CStash及storage=new unsigned char[..]嘛
没的话,内存里不知道哪块被DELETE[],程序会崩掉的Top
4 楼minghui000(沉迷网络游戏)回复于 2003-10-03 14:14:12 得分 10
upTop
5 楼junmayang(笨猪)回复于 2003-10-03 15:11:19 得分 10
对,CStash* s和storage没有初始化,搞不好程序会崩掉Top




