我目前正在进入我的第一个完整的C++项目,并且我遇到了Ncurses.
getstr()需要一个char数组作为输入,但是有了这个,就没有办法防止缓冲区溢出.让我假装我正在使用此输入来获取名称.我的代码将是以下内容:
int main(){
char* nameTemp = new char[160];
initscr();
getstr(nameTemp);
endwin();
delete nameTemp;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是如果用户决定使用超过160个字符作为他的名字,会发生什么?我收到错误,程序失败.除了创建巨大的Char数组之外,有没有办法解决程序中的这种致命缺陷?谢谢.
注意:我正在使用带有g ++的Ubuntu 12.04