通过将java程序转换为c ++来学习C++的新手.以下代码在执行时会导致分段错误(SIGSEGV).
//add web page reference to pages queue (STL)
void CrawlerQueue::addWebPage(WebPage & webpage) {
pagesBuffer.push(webpage);
}
//remove and return web page reference from pages queue
WebPage & CrawlerQueue::getWebPage() {
if (pagesBuffer.size() > 0) {
WebPage & page = pagesBuffer.front();
pagesBuffer.pop();
return page;
} else
throw "Web pages queue is empty!";
}
//code that results in segmentation fault when called
void PageParser::extractLinks(){
try {
WebPage & page = crawlerqueue.getWebPage();
}catch (const char * error) {
return;
}
}
Run Code Online (Sandbox Code Playgroud)
修复了上述修复分段错误问题的代码的更改(<====):
//return …Run Code Online (Sandbox Code Playgroud)