#include <stdlib.h> #include <iostream> using namespace std;const int MAX_NodoS = 20000;const int infinito = 10000;int nnodos;int nAristas;int G[MAX_NodoS][MAX_NodoS]; int solucion[MAX_NodoS][MAX_NodoS];int menorCoste[MAX_NodoS];int masCercano[MAX_NodoS];voID leeGrafo(){ if (nnodos<0 || nnodos>MAX_NodoS) { cerr << "Numero de nodos (" << nnodos << ") no valIDo\n"; exit(0); } for (int i=0; i<nnodos ; i++) for (int j=0; j<nnodos ; j++) G[i][j] = infinito; int A,B,P; for(int i=0;i<nAristas;i++){ cin >> A >> B >> P; G[A][B] = P; G[B][A] = P; } }voID prepararEstructuras(){ // Grafo de salIDa for(int i=0;i<nnodos;i++) for(int j=0;j<nnodos;j++) solucion[i][j] = infinito; // el mas cercaano for(int i=1;i<nnodos;i++){ masCercano[i]=0; // menor coste menorCoste[i]=G[0][i]; } }voID prim(){ prepararEstructuras(); int min,k; for(int i=1;i<nnodos;i++){ min = menorCoste[1]; k = 1; for(int j=2;i<nnodos;j++){ if(menorCoste[j] < min){ min = menorCoste[j]; k = j; } } solucion[k][masCercano[k]] = G[k][masCercano[k]]; menorCoste[k] = infinito; for(int j=1;j<nnodos;j++){ if(G[k][j] < menorCoste[j] && menorCoste[j]!=infinito){ menorCoste[j] = G[k][j]; masCercano[j] = k; } } }}voID output(){ for(int i=0;i<nnodos;i++){ for(int j=0;j<nnodos;j++) cout << G[i][j] << ' '; cout << endl; }}int main (){ while(true){ cin >> nnodos; cin >> nAristas; if((nnodos==0)&&(nAristas==0)) break; else{ leeGrafo(); output(); prim(); } } }
我已经知道我必须使用strace来查找正在发生的事情,这就是我得到的:
execve("./412",["./412"],[/* 38 vars */] <unfinished ...>+++ killed by SIGKILL +++Killed
我正在运行ubuntu,这是我第一次遇到这种类型的错误.该程序应该在从输入中连续读取两个零后停止,我可以保证我的图形描述文件中有.即使我执行程序而没有对我的图形文件进行输入重定向,问题也会发生.
解决方法 虽然我不是100%确定这是问题所在,但请看一下全局数组的大小:const int MAX_NodoS = 20000;int G[MAX_NodoS][MAX_NodoS]; int solucion[MAX_NodoS][MAX_NodoS];
假设int是4个字节,您将需要:
20000 * 20000 * 4 bytes * 2 = ~3.2 GB
首先,你甚至可能没有那么多记忆.其次,如果你使用的是32位,那么 *** 作系统很可能不允许单个进程拥有那么多内存.
假设您使用64位(假设您有足够的内存),解决方案是在运行时分配它.
总结以上是内存溢出为你收集整理的c – SIGKILL的杀戮过程全部内容,希望文章能够帮你解决c – SIGKILL的杀戮过程所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)