注册 登录
编程论坛 C++教室

栈空间开辟问题

G梦 发布于 2013-04-06 19:36, 633 次点击
问题:当栈空间不够用时,要把它的空间自动增为两倍,并且释放原来的空间(以学生成绩为实例)
求指教
9 回复
#2
邓士林2013-04-06 21:09
int *newArray=new int[maxsize*2]关键的语句
#3
peach54602013-04-07 07:22
开辟个新空间,把原来的赋过去
#4
G梦2013-04-07 23:38
回复 2楼 邓士林
我想把原来的内容赋进去的,就把原栈顶指针赋给新指针,然后再把新指针赋给栈底,可是还是不成功,怎么回事啊?求破。。。。
CStuScore *newArray=new CStuScore[m_nSize*2];
            buffer = newArray;        // 开辟栈空间
            if ( buffer != NULL)// 开辟成功
            {
               sp = newArray;// 初建时,sp指向栈底
               newArray=buffer;
               delete [m_nSize]buffer;
               buffer=NULL;
               cout<<"空间已成功扩展,原空间已释放"<<endl;// 显示成功的提示信息
#5
peach54602013-04-08 08:42
以下是引用G梦在2013-4-7 23:38:49的发言:

我想把原来的内容赋进去的,就把原栈顶指针赋给新指针,然后再把新指针赋给栈底,可是还是不成功,怎么回事啊?求破。。。。
CStuScore *newArray=new CStuScore[m_nSize*2];
            buffer = newArray;        // 开辟栈空间
            if ( buffer != NULL)// 开辟成功
            {
               sp = newArray;// 初建时,sp指向栈底
               newArray=buffer;
               delete [m_nSize]buffer;
               buffer=NULL;
               cout<<"空间已成功扩展,原空间已释放"<<endl;// 显示成功的提示信息

吐血
#6
yuccn2013-04-08 12:05
你是指堆空间吧
#7
G梦2013-04-10 19:48
回复 5楼 peach5460
为嘛?血可不能乱吐啊
#8
G梦2013-04-10 19:51
回复 6楼 yuccn
是栈空间自动开辟
#9
peach54602013-04-11 06:47
newArray=buffer;
你是不是觉得只要这样就是把数组的值都赋值过去了?
#10
G梦2013-04-12 10:33
回复 9楼 peach5460
是啊,到底出什么问题了?求指教
1