① C++程序調試時出現「Program received signal SIGSEGV,Segmentation fault.」一般是什麼原因,求指導。
是因為指針未初始化或越界,訪問到了未分配地址的空間。
#include<iostream>
usingnamespacestd;
intmain(){
intiYear,iMonth,iDay,iDays;boolbFlag=true;
cout<<"請輸入日期(年/月/日):"<<endl;
scanf("%4d/%2d/%2d",&iYear,&iMonth,&iDay);
switch(iMonth)
{
case1:;
case3:;
case5:;
case7:;
case8:;
case10:;
case12:iDays=31;break;
case4:;
case6:;
case9:;
case11:iDays=30;break;
case2:if((iYear%4==0)&&(iYear%100!=0)||(iYear%400==0))iDays=29;
elseiDays=28;break;
default:bFlag=false;
}
if(bFlag)
cout<<"此日期對應月的天數是:"<<iDays<<endl;
else
cout<<"輸出錯誤:"<<endl;
system("pause");
}
(1)c語言sigsegv擴展閱讀
未初始化的內存
如:p已被分配了10個位元組。這10個位元組可能包含垃圾數據。
char*p=malloc(10);
垃圾數據
如果在對這個p賦值前,某個代碼段嘗試訪問它,則可能會獲得垃圾值,您的程序可能具有不可預測的行為。p可能具有您的程序從未曾預料到的值。
結合使用memset和malloc,或者使用calloc。
char*p=malloc(10);
memset(p,』』,10);
② C程序調試時出現Program received signal SIGSEGV, Segmentation fault
目測錯誤 scanf("%d",hi[i]); -》 scanf("%d",&hi[i]);
③ C語言 這段代碼為什麼顯示段錯誤program received signal sigsegv 求大神解答!!
1:這個循環里出現了s[-1]
for (i=ca+cb-1;i>=0;i--)
if (s[i]>=10)
{
s[i-1]+=s[i]/10;
s[i]%=10;
}
2:
a=(char*)malloc(sizeof(N));
b=(char*)malloc(sizeof(N));
c=(char*)malloc(sizeof(2*N));
注意開辟了空間要釋放。
free(a);
free(b);
free(c);
④ 求幫忙看看這段代碼為什麼顯示SIGSEGVC語言
段錯誤,一般是指針錯誤訪問了非法內存,最高把文本文件的代碼發出來。
⑤ c語言出現Program received signal SIGSEGV, Segmentation fault是什麼原因
段錯誤,訪問非法內存。
⑥ C語言報錯program received signal sigsegv,求大神指點,謝謝!
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
struct student {
char name[100];
float score;
int age;
};
int input(int , student *);
int output(int , student *);
int format(int , student *);
int main()
{
int len , i = 0 ;
struct student *PArry;
printf("Please input len : ");
scanf("%d" , &len) ;
PArry = (struct student *)malloc(sizeof(struct student)*len);
if(NULL == PArry) //判斷內存是否分配成功
{
printf("Ram allocation fail !");
exit(1);
}
printf("size = %d " , sizeof(PArry));
printf("size1 = %d " , sizeof(int));
input(len,PArry);
free(PArry);
return 0;
}
int input(int j ,student *PA)
{
int i = 0 ;
printf("i = %d j = %d " ,i , j);
format(j , PA);
printf(" ");
output(j , PA);
}
int output(int j ,student *PAr)
{
int i = 0 ;
printf(" *********************** The student message: ");
for(i = 0 ; i < j ; ++i)
{
printf("j2 = %d : " , j);
printf("Num %d of students messgae: " , i + 1);
printf("Age: %d " , PAr[i].age);
printf("Score: %.2f " , PAr[i].score);
printf("Name: %s " , PAr[i].name);
printf("********************* ");
}
return 0;
}
int format(int k , struct student *PAR)
{
int i = 0 ;
printf(" ");
fflush(stdin);
for(i = 0 ; i < k ; ++i)
{
printf("Please intput num %d Student Message : " , i + 1);
fflush(stdin);
printf("k = %d i = %d " , k , i);
printf("age = ");
while((scanf("%d" , &PAR[i].age)) != 1)
{
fflush(stdin);
printf(" ");
printf(" Type Date Error , Please input again . ");
printf(" ");
printf("age = ");
}
printf("Age = %d " , PAR[i].age);
printf("score = ");
fflush(stdin);
while((scanf("%f" , &PAR[i].score)) != 1)
{
fflush(stdin); printf(" ");
printf(" Type Date Error , Please input again . ");
printf(" ");
printf("score = ");
}
printf("score = %f " , PAR[i].score);
printf("name = ");
fflush(stdin);
while((scanf("%s", PAR[i].name)) != 1)
{
fflush(stdin);
printf(" ");
printf(" Type Date Error , Please input again . ");
printf(" ");
printf("name = ");
}
printf("name = %s " , &PAR[i].name );
fflush(stdin);
printf(" ");
}
}
⑦ c語言程序中,SIGSEGV越界訪問內存的錯誤
if(pf=NULL)應該是if(pf==NULL)
否則你直接給他賦值NULL了,訪問非法指針就會段錯誤。
⑧ C語言錯誤不知道為什麼 it stopped with signal sigsegv
#define A 2000001
這里定義的A太大了,超出了你的開發工具所能允許的范圍,改小一些,或改成動態分配方式!