VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1288|回复: 3

奇怪 怎么会运行不了,gcc8.1编译后运行不了,5.1运行正常

[复制链接]
06_avatar_middle
最佳答案
0 
在线会员 发表于 2023-3-1 13:58:38 | 显示全部楼层 |阅读模式
//在线编译器提示是 malloc(): corrupted top size 用int都运行正常 double就不行

#include <iostream>
#include <vector>
using namespace std;
class CMystack{
public:
    CMystack(size_t =5);
    ~CMystack();
    bool m_isFULL(); //返回栈是否已满
    bool m_isEmpty();    //返回是否是空栈
    void m_push(double);   //入栈
    void m_pop();      //出栈且返回值
    void m_print(); //显示栈内数据
private:
    double* p_arr;   //指向栈数组
    size_t p_n; //指向当前栈位置
    size_t p_arrn;  //栈大小
};

CMystack::CMystack(size_t n){
    if(n<= 0) n= 5;
    p_arr =new double(n);

    p_n= 0;
    p_arrn=n ;
}
CMystack::~CMystack(){
    delete []p_arr;
}
bool CMystack::m_isFULL(){  //返回栈是否已满
    return !(p_n< p_arrn);
}
bool CMystack::m_isEmpty(){    //返回是否是空栈
    return p_n== 0;
}
void CMystack::m_push(double t){   //入栈
    if(m_isFULL()){
        p_n--;
        cout<<"栈已满,无法入栈"<<endl;
    }else{
        p_arr[p_n]= t;
        p_n++;
    }
}
void CMystack::m_pop(){      //出栈且返回值
    if(!m_isEmpty()){
        p_n--;
        cout<<"弹出数据 "<<p_arr[p_n]<<endl;
    }else{
        cout<<"栈已空,没有任何数据存在"<<endl;
    }
}
void CMystack::m_print(){ //显示栈内数据
    cout<<"栈当前数据为"<<endl;
    if(m_isEmpty())
        cout<<"空"<<endl;
    else{
        for(size_t i= 0;i< p_n;i++)
            cout<<p_arr[i]<<"  ";
        cout<<endl;
    }
}


int main(){
    CMystack my;
    my.m_push(5.3+1);
    my.m_push(43.3+3);
    my.m_push(0.236+5);
    my.m_push(0.07);
    my.m_push(13.5+0.2);
    my.m_print();          //到了这里就跟踪不了

    my.m_pop();
    my.m_pop();
    my.m_print();
    my.m_pop();
    my.m_pop();
    my.m_pop();
    my.m_print();
}




上一篇:VS ActiveX控件報錯請大神幫忙看看
下一篇:请问免费教程里用到的库怎么下载?
02_avatar_middle
最佳答案
0 
在线会员 发表于 2023-3-11 02:15:40 | 显示全部楼层
有什么意义吗?没看懂,double* p_arr;   //指向栈数组   这里是不是少了[]?数组不是你这么定义的吧
char*p_arry[]不应该是这样的吗?你定义的是double*类型的对象吧?
02_avatar_middle
最佳答案
0 
在线会员 发表于 2023-3-11 02:18:09 | 显示全部楼层
是指针的话,也不是你这样用的吧
74_avatar_middle
最佳答案
7 
在线会员 发表于 2023-3-24 22:19:15 | 显示全部楼层
先不说别的哈,那个Mystack构造函数里面那个new错了吧,要申请5块double内存是new double[5]
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2024-2-28 06:57

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表