求助:为啥我编的C++程序在自己电脑上能正常运行,但编译后挂在后台linux系统下就总是运行一半后出错,

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求助:为啥我编的C++程序在自己电脑上能正常运行,但编译后挂在后台linux系统下就总是运行一半后出错,相关的知识,希望对你有一定的参考价值。

总是跑到一半就停止了,但前半部分的数据都能正常保存。前台跑的话会出现:segmentation fault ,后台会出现core.****的文件,这到底是为神马啊!!!求大神指导!!!

机器不同,编译出为的目标代码就不同,这就是为什么总有人说C程序不好的一个原因。
C编译出来的代码是与当前机器类型和操作系统直接相关的!

一模一样的机器,不同的操作系统,其执行程序代码是不同的。
一样的操作系统,不同的机器类型,其执行程序代码也是不同的。
除非是两台机器一模一样,操作系统也一样,编译系统也相同,这样的机器间代码才可以直接重用。

你的程序出现异常:
一、你要保证你执行的程序是在当前机器上编译通过的才可以
二、要注意机器的CPU类型:64位机和32位机的差异。
三、详细检查、调试自己程序中的源代码,是不是存在BUG
参考技术A segmentation fault 是指程序出现段错误;
首先你自己电脑上编程是什么环境呢,是linux吗,还是windows;如果是windows的话,windows下的编程放到linux下跑,本身就有可能出现问题的。有些系统库是不同的。
参考技术B 重新用gcc编译一次,再运行,这是段错误啊,可能是因为你换到linux下了 参考技术C 把你代码贴上来

这个很明显的段错误

说白了 就是溢出 越界本回答被提问者采纳

c语言问题。我编的。初学函数。略懂指针。编了以下程序不知错在哪里。求高手帮忙

定义一个函数,功能是计算n个学生的成绩中,高于平均成绩的人数,并作为函数值。用主函数来调用它,统计50个学生成绩中,高于平均成绩的有多少人?
#include<stdio.h>

main()

int fun();
int i,j,num;
float s[5][10];
for(i=0;i<5;i++)
for(j=0;j<10;j++)
scanf("%f",&s[i][j]);
num=fun(s[5]);
printf("%d",num);
getch();

int fun(float x[5][10])

int i,j;
int num=0,a,s=0;
for(i=0;i<5;i++)
for(j=0;j<10;j++)
s+=x[i][j];
a=s/50;
for(i=0;i<5;i++)
for(j=0;j<10;j++)
if(x[i][j]>a)
num++;
return num;

错误主要有二种:一是函数声明时,没有参数。函数调用时参数使用错误,应该传地址否则无法传递数组。二是类型不匹配,不同类型运算C会自动隐式转换。如5/9的结果是0;
修改如下:
函数声明int fun();改成:int fun(float x[5][10]));
函数调用num=fun(s[5]);改成:num=fun(s);
int num=0,a,s=0;改成:int num=0; float a,s=0;
参考技术A 函数声明要写在main函数外面
即int fun();不能放在main函数中
参考技术B 你的a,b声明的大小是100x81,但在tra函数中,你又把它们当成m x n的二维数组来处理,当然出错了

以上是关于求助:为啥我编的C++程序在自己电脑上能正常运行,但编译后挂在后台linux系统下就总是运行一半后出错,的主要内容,如果未能解决你的问题,请参考以下文章

为啥同一台电脑上能同时运行多个音乐播放程序?

今天编的一个C++程序

我使用QT5.0.1写的程序在自己有安装QT的电脑上能正常运行,但在没安装QT的电脑上会出错,我把BIN

Delphi Treeview 的使用问题,请教各位大师,帮忙看一下,我编的怎么不对了

noip2010接水问题的测试数据第九个答案是508222,可我编的程序得出的答案却是508223,

c语言问题。我编的。初学函数。略懂指针。编了以下程序不知错在哪里。求高手帮忙