社区
C语言
帖子详情
错误诊断的问题
hightemple
2003-10-22 11:21:25
我编的一个程序,需要对一个算法的结果进行两百次统计平均,就是一个算法要重复200次,但是程序总是算到百把次的时候会出现中断(大概四个小时吧),提示dsw出现错误,偶推断是内存溢出,但是我对定义的类每次都用了析构函数,能够析构的变量都在析构函数中析构了,但是情况仍然没有改善,请教高手是什么问题,遇到这种问题怎么分析,有没有什么方法找到从出错的原因。
...全文
12
6
打赏
收藏
错误诊断的问题
我编的一个程序,需要对一个算法的结果进行两百次统计平均,就是一个算法要重复200次,但是程序总是算到百把次的时候会出现中断(大概四个小时吧),提示dsw出现错误,偶推断是内存溢出,但是我对定义的类每次都用了析构函数,能够析构的变量都在析构函数中析构了,但是情况仍然没有改善,请教高手是什么问题,遇到这种问题怎么分析,有没有什么方法找到从出错的原因。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hightemple
2003-10-23
打赏
举报
回复
可以上传程序吗?
高手帮我看看。
Lymtics
2003-10-22
打赏
举报
回复
在VC++中DEBUG模式会带来很多的调试代码,很占戋空间的..
我是由dsw猜想到是是调试代码作怪..你看看.opt文件的大小
hightemple
2003-10-22
打赏
举报
回复
我是运行的时候出的错,和编译有关系吗?
hightemple
2003-10-22
打赏
举报
回复
#include "WDMNetwork.h"
#include "SDPair.h"
class CoreControl
{
public:
CoreControl();
~CoreControl();
bool NetConnet_warshall(const WDMNetwork &g);
void shortestpath_DIJ(const int v,const WDMNetwork g);
void shortestpath_DJ_ALL(const WDMNetwork g);
void shortestpath_FlOYD(const WDMNetwork g);
void shortestpath_MNH(const int v,const WDMNetwork g);
void shortestpath_MNH_All(const WDMNetwork g);
int GetLargestLoad();
void LPSet(const WDMNetwork g);//光路径按长度分组,有相同间距的节点对分成一组
bool Lpcm(WDMNetwork g,vector<SDPair> set,SDPair lp,int s,int e); //光路径冲突函数,两条光路径冲突返回true
bool Lpcm_MNH(WDMNetwork g,vector<SDPair> set,SDPair &lp,int s,int e); //光路径冲突函数,两条光路径冲突返回true
//针对MNH算法
void FirstFit(const WDMNetwork g); //firstfit波长分配算法,长路径优先
void FirstFit_shortestfist(const WDMNetwork g);//firstfit波长分配算法,短路径优先
void LinkLoad(vector<vector<SDPair> > sdPairs); //求各链路的载荷;
void UpdateRouteTab();
void LinkSet(vector<Link> opLink);
void ExchangeRoute(SDPair &sdPair,int i);
bool SearchMNHPath(); //寻找可以替换当前路由的新的路径,成功返回路径序号,失败返回-1
int FindUnusedPath(SDPair sdPairs,int cur);//在使用最高载荷的节点对间看能否找到未使用的且绕过此链路的路径
bool FindNewPath(int u,int v,int cur);
void UpdateLinkLoad(vector<SDPair> lpnum);
void PrintOptimizedRoute();
int RoutLinkSum(SDPair sd,int s);//计算一条路径上所以链路的负载和
bool LL_FindNewPath(int u,int v,int cur);//针对LL_MNH算法
int LL_FindUnusedPath(SDPair sdPairs,int cur);//增加一个判定条件,该路由的链路权值应该最大
bool LL_SearchMNHPath();
void Shortest_MNH(const WDMNetwork &g);//改进路由算法,通过改变负载最重的链路的路由来降低使用波长数
void LL_MNH(const WDMNetwork &g);//基于MNH的链路最大权值算法如果某一链路上通过的路径数目越少,那么该链路被选择的概率越大。
protected:
private:
vector<int> dist; //辅助向量,表示当前所找到的从v到终点vi的最短路径长度
vector<vector<SDPair> > sdPairs; //网络的节点对
int diam; //网络直径
vector<vector<SDPair> > lenSet; //光路径按长度分组,有相同间距的节点对分成一组
vector<Link> opLink; //1光链路
vector<Link> opLinkSet; //光链路按负载从大到小排列
int limitDB; //由距离确定的网络下限
int frontLoad; //frontLoad保存更换路由前最重负载链路的最小值
vector<vector<SDPair> > frontsdPairs; //保存更新前节点对间的路由状态
vector<Link> frontLinkSet; //保存链路负载次序
SDPair changedRoute; //被更换的节点对路由
};
CoreControl::CoreControl(void)
{
dist.resize(0);
sdPairs.resize(0);
diam=0;
lenSet.resize(0);
opLink.resize(0);
opLinkSet.resize(0);
frontLoad=1000;
}
CoreControl::~CoreControl()
{
dist.~vector();
sdPairs.~vector();
lenSet.~vector();
opLink.~vector();
opLinkSet.~vector();
frontsdPairs.~vector();
frontLinkSet.~vector();
cout<<"Complete the destruction."<<endl;
}
#include "head.h"
class WDMNetwork
{
public:
int curNum; //当前网络的节点数
int nodeNum; //节点数
int linkNum; //连接节点的链路数
int limitPB;//网络割集理论确定的下限
vector<int> nodes;
vector<vector<int> > sdLinks;
vector<vector<int> > staticLinks;//保存第一次输入网络的连接矩阵,不随次数而变
vector<int> newSeq; //保存更换后的序号顺序
int max; //表示权值的极限值
int net; //net=1表示带权网络
int mark; //mark=1表示有向网络
private:
friend class CoreControl;
friend class SDPair;
friend class Link;
public:
WDMNetwork(); //构造空的网络
WDMNetwork(int mark=1,int net=0,int max=1000);
void PrintNetMatrix();
void RandChangeNode();
void PrintNewSeq();
void SetNewSeq();
// friend std::istream operator>>(istream &in,WDMNetwork &g);//输入网络的顶点和链路的信息
// friend ostream &WDMNetwork::operator<<(ostream &out,WDMNetwork &g); //输出网络的顶点和链路的信息
};
std::istream &operator>>(istream &in,WDMNetwork &g);
std::ostream &operator<<(ostream &out,WDMNetwork &g);
WDMNetwork::WDMNetwork()
{
nodeNum=curNum=0;
linkNum=0;
mark=0;
net=0;
max=1000;
}
WDMNetwork::WDMNetwork(int mark,int net,int max)
{
nodeNum=curNum=0;
linkNum=0;
WDMNetwork::mark=mark;
WDMNetwork::net=net;
WDMNetwork::max=max;
}
#include "CoreControl.h"
main()
{
WDMNetwork g(1,1);
cin>>g;
cout<<g;
g.PrintNetMatrix();
std::ofstream file("statics1.txt");
for(int i=0;i<200;i++)
{
cout<<"\n\n\n";
cout<<"现在正在对网络进行第"<<i+1<<"次优化..........."<<endl;
CoreControl core;
g.RandChangeNode();
g.PrintNetMatrix();
core.LL_MNH(g);
core.PrintOptimizedRoute();
file<<core.GetLargestLoad()<<" "<<endl;
}
//////////////////////////////////////////////////////////////////////////////////////
return 1;
}
Lymtics
2003-10-22
打赏
举报
回复
看看编译选项是不是RESLEASE..
VC的调试代码可能在捣鬼
ttlb
2003-10-22
打赏
举报
回复
我只知道,可能编译时候出错的,千万不要拖到运行时,尽量让编译器找到更多的错误。
另外,dsw 是 vc 工作区文件的扩展名,你看看会不会是别处的问题。
基于LSTM的中文语法
错误诊断
中文语法
错误诊断
通常分为四种:冗余单词(R),缺失单词(M),错误单词选择(S)和无序单词(W) 如图所示: 将诊断中文语法错误看成序列标注的
问题
,正确的标注为O,错误开始位置标注为B-X,中间位置、结束...
主机模拟i2c检测设备时出现错误死循环_在博途中如何使用诊断错误组织块OB82诊断I/O访问错误?...
一、诊断错误 OB82 的功能S7-1200支持诊断错误中断,可以为具有诊断功能的模块启用诊断错误中断功能来检测模块状态。出现故障(进入事件),故障解除(离开事件)均会触发诊断中断 OB82 。当模块检测到故障并且在软件中...
策略服务器未运行错误5,win7系统使用诊断检查网络提示“诊断策略服务未运行”的解决方法...
Win7系统有时候会出现网络故障导致无法上网,很多朋友都会使用网络诊断来检查
问题
。不过有的用户在使用诊断检查网络时提示“诊断策略服务未运行”(如下图所示)导致诊断失败,那么如何解决呢?出现这种情况一般是系统...
网络诊断显示服务器有
问题
,网络诊断提示DNS服务器未响应该怎么办?dns服务器未响应解决方法...
但网络连接依然会在不经意间出现
问题
,这时候大家使用最多的便是网络诊断,大部分网络
问题
都可以通过网络诊断解决
问题
,有时也可碰到DNS服务器未响应的诊断结果。如果用Windows网络诊断,诊断出的结果是“DNS服务器...
策略服务器未运行错误5,win10系统出现诊断策略服务未运行的解决方法介绍
win10系统出现诊断策略服务未运行的
问题
怎么办呢?使用win10系统出现提示“诊断策略服务未运行”的
问题
要如何的解决呢?接下来的文章中小编将会带来详细的解决步骤,感兴趣的朋友不妨阅读本文了解一下。诊断策略服务...
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章