【发布时间】:2012-05-01 13:13:44
【问题描述】:
这与 C++ 中的字符串有关。很久没有接触C/C++了;事实上,大约 7 年前,我只在大学的第一年就使用这些语言进行了编程。
在 C 语言中,为了保存字符串,我必须创建字符数组(无论是静态的还是动态的,这都无关紧要)。所以这意味着我需要提前猜测数组将包含的字符串的大小。好吧,我在 C++ 中应用了相同的方法。我知道有一个 std::string 类,但我从来没有使用它。
我的问题是,由于我们从未在 std::string 类中声明数组/字符串的大小,因此在写入时是否会发生缓冲区溢出。我的意思是,在 C 语言中,如果数组的大小为 10,并且我在控制台上输入了超过 10 个字符,那么额外的数据将被写入与数组相邻的其他对象的内存位置。使用 cin 对象时,std::string 中是否会发生类似的事情。
在使用 std::string 时,我是否必须在 C++ 中预先猜测字符串的大小?
好吧!谢谢大家。这个页面上没有一个正确的答案(提供了很多不同的解释),所以我没有选择任何一个这样的答案。我对前 5 个很满意。保重!
【问题讨论】:
-
这样我就不用事先猜测字符串的大小了吧?
标签: c++ string buffer-overflow