누구도 stat (const char *, stat *)의 인수로 c_str()에서 반환 된 const char *를 사용하면 프로그램이 세그 폴트? 나는 그 선에 의한 나의 segfault를 좁혔다 고 생각하지만, 대신 무엇을 사용해야하는지 잘 모르겠습니다. strcpy()를 사용하여 문자열을 문자 배열로 복사하려고 시도했지만 메서드가 반환 될 때 프로그램이 segfault로 인해 발생했습니다. 당신이 struct stat
를 사용하는 방법Segfault 다른 메서드에 대한 인수로 std :: string.c_str() 사용할 때
DIR * dir_p;
struct dirent *dir_entry_p;
list<string> files;
dir_p = opendir(".");
//push all file names to a list
while((dir_entry_p = readdir(dir_p))!=NULL){
string name = dir_entry_p->d_name;
files.push_front(name);
}
closedir(dir_p);
files.sort();
//count total blocks
//iterate through list
map<string,struct stat*> fileStats;
struct stat * entry;
for(list<string>::iterator it = files.begin(); it != files.end(); it++){
stat(it->c_str(),entry);
fileStats[*it]=entry;
cout<<entry->st_blocks<<" "<<*it<<endl;
}
모든 경고 및 디버그 정보 (예 :'g ++ -Wall -g')로 컴파일하십시오. 경고가 나오지 않을 때까지 코드를 개선하십시오. [valgrind] (http://valgrind.org/)와 ** 디버거 ** (예 :'gdb') –
@ H2CO3을 사용하십시오. "형식이 지정되지 않고 읽을 수없는 혼란"을 피하는 방법에 대한 제안이 있습니다. 나중에 코드를 작성할 때 고려해야 할 것은 아닙니다. 그것이 그렇듯이, 귀하의 의견은 단순히 도움이되지 않습니다 염증. – LucienK