如何解决C,C++中stack overflow问题

如题所述

#include<stdio.h>
#include<stdlib.h>
#include<string.h>//字符串拷贝函数头文件
class CMessageStack
{
private:
int m_Point; // 现在消息存放的位置
char m_Message[ 2000 ][ 1000 ];
public:
void MessageStack() // 构造函数,初始化类内部定义函数不需要加这个 CMessageStack:: ,如果是类外部定义必须加
{
m_Point = 0;
//memset( m_Message, 0, 2000 * 1000);
printf("构造函数");
}
bool DepMessage( const char In_Message[1000] )
{
// 存消息的函数
if( m_Point < 2000 -1 ) // 如果栈未满
{

strcpy( m_Message[m_Point], In_Message ); // 复制到栈中
m_Point ++; // 表明多了一个消息
return true; // 成功添加
}
else // 栈满
{
return false;
}
}
bool SeekMessage( char In_Message[ 1000 ] )
{
// 取消息的函数
if( m_Point ) // 当栈中消息数量!=NULL时
{
strcpy( In_Message, m_Message[ m_Point -1] ); // 拷贝
memset( m_Message[ m_Point-1 ], 0 , 1000 );
m_Point --; // 消息减1
return true;
}
else // 栈空
{
return false;
}
}
int GetMessageCount( void ) // 取消息总数
{
return m_Point;
}
};

int main()
{
CMessageStack stack; //这一句引发内存错误
printf("he");
system("pause");
return 0;
}

编译通过
如果你是第一次写类,建议先一点点写,别写这么复杂的,不容易懂
温馨提示:答案为网友推荐,仅供参考
相似回答