关于stack Overflow的一个问题

douchog_13k 2009-04-04 05:47:06
我写了下面这样一个程序可能是程序中申请的空间太大了,一运行就出现“oxc00000fd:Stack Overflow"错误

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <bitset>
#include <string>

#define path_num 2000
#define word_size 100 //最大单词大小
#define null 0
#define stopword_num 1000
#define bit_size 3750 //定义的向量空间的大小

using namespace std;

int main(int argc, char* argv[])
{

int n_path=0,i=0;
int n_stop=0;
string stopword[stopword_num];
string line[path_num],line2[path_num];
char *p[path_num]={null};

int count[path_num]={0};
bitset <bit_size> v[path_num]={0}; //可能是这句中申请的空间太大了
int max_path=0;


return 0;
}

如果在你的机器上没有出现错误可以把#define bit_size 3750 中3750的值调的大的点。
我需要的bit_size的值还要很大。大家帮忙看看这个问题怎么解决啊
...全文
143 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
amossavez 2009-04-04
  • 打赏
  • 举报
回复
bitset支持unsigned long的二进制最大位数,path_num定义的过长,不适合用比bitset
  • 打赏
  • 举报
回复
楼主最好讲下你的需求,bitset不支持那么多位,你却仍然要申请.
肯定有替代办法的,你说你的需求先.
Paradin 2009-04-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 fallening 的回复:]
引用 2 楼 Paradin 的回复:
对栈来说是大了点。动态申请没问题:
C/C++ code#include <iostream>#include <fstream>#include <bitset>#include <string>#definepath_num 2000#defineword_size 100//最大单词大小#definenull 0#definestopword_num 1000#definebit_size 3750//定义的向量空间的大小usingnamespacestd;intmain(intargc,char*argv[])
{intn_path=0,i=0;intn_stop=0;stringstopword[stopword_num];stringline[path…
[/Quote]

嗯诺我好不负责……
Paradin 2009-04-04
  • 打赏
  • 举报
回复
实际使用空间增长了32倍,不过不占用栈空间
fallening 2009-04-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Paradin 的回复:]
对栈来说是大了点。动态申请没问题:
C/C++ code#include<iostream>#include<fstream>#include<bitset>#include<string>#definepath_num 2000#defineword_size 100//最大单词大小#definenull 0#definestopword_num 1000#definebit_size 3750//定义的向量空间的大小usingnamespacestd;intmain(intargc,char*argv[])
{intn_path=0,i=0;intn_stop=0;stringstopword[stopword_num];stringline[path_num],line2[path_num];char*p[pa…
[/Quote]
晕,new了也不delete

头文件是boost/dynamic_bitset.hpp
mengde007 2009-04-04
  • 打赏
  • 举报
回复
换vector
vector<int> v(bit_size,0);
Paradin 2009-04-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 douchog_13k 的回复:]
引用 1 楼 fallening 的回复:
用dynamic_bitset代替看看

dynamic_bitset怎么用啊,要加什么头文件吗?
[/Quote]

那是boost库里面的。stl没有。
你自己实现一个~~
douchog_13k 2009-04-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fallening 的回复:]
用dynamic_bitset代替看看
[/Quote]
dynamic_bitset怎么用啊,要加什么头文件吗?
Paradin 2009-04-04
  • 打赏
  • 举报
回复
对栈来说是大了点。动态申请没问题:

#include <iostream>
#include <fstream>
#include <bitset>
#include <string>
#define path_num 2000
#define word_size 100
//最大单词大小
#define null 0
#define stopword_num 1000
#define bit_size 3750
//定义的向量空间的大小
using namespace std;
int main(int argc, char* argv[])
{
int n_path=0,i=0;
int n_stop=0;
string stopword[stopword_num];
string line[path_num],line2[path_num];
char *p[path_num]={null};
int count[path_num]={0};
bitset<bit_size> *v = new bitset<bit_size>[path_num]; //dynamic

int max_path=0; return 0;
}


fallening 2009-04-04
  • 打赏
  • 举报
回复
用dynamic_bitset代替看看

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧