내 프로그램이 SIGSEGV를 수신하고 디버그하려고합니다. 이상한 것은 gdb를 사용하여 줄 단위로 갈 때 프로그램이 정상적인 실행 흐름이어야한다고 생각하지 않는다는 것입니다. 이것은 내가 GDB에서 볼 것입니다SIGSEGV : 프로그램이 순차적으로 실행되지 않습니다.
#include <iostream>
#include <fstream>
using namespace std;
char * str_reverse(char * s);
int main (int argv, char ** argc){
char * strinput;
fstream finput;
fstream foutput;
finput.open(argc[1], ios::in);
finput >> strinput;
finput.close();
foutput.open(argc[2], ios::out);
foutput << str_reverse(strinput);
foutput.close();
return 1;
}
char * str_reverse(char * s){
int len = 0;
while (s[len] != '\000') len++;
char * rev = new char[len];
for (int i = 0; i < len; i++)
rev[i] = s[len-(i+1)];
rev[len] = '\000';
return rev;
}
:
이
내 코드입니다 그런데18 foutput << str_reverse(strinput);
(gdb) n
19 foutput.close();
(gdb) n
21 return 1;
(gdb) n
11 fstream foutput;
(gdb) n
21 return 1;
(gdb) n
Program received signal SIGSEGV, Segmentation fault.
프로그램이 올바르게 수행이 무엇을 의미하는지 않습니다 : 그것은 파일을 엽니 다 , 문자열을 읽고 그것을 다른 파일에 역순으로 저장합니다.
사이드 노트 : 당신은'argc'와'argv'를 바꾸 었습니다. argc는 인수의 * c * ount 여야합니다. – Csq
그 주셔서 감사합니다 – iguarna