我正在使用主要使用C++但使用c风格字符串的现有代码的项目。采取以下内容:基本c风格的字符串内存分配
#include <iostream>
int main(int argc, char *argv[])
{
char* myString = "this is a test";
myString = "this is a very very very very very very very very very very very long string";
cout << myString << endl;
return 0;
}
这编译和运行正常,输出是长字符串。
但我不明白为什么它的作品。我的理解是,
char* myString
是一个指向的内存大到足以容纳字符串“这是测试”的区域。如果是这样的话,那么我怎么能够在同一个位置存储更长的字符串呢?我希望这样做会导致崩溃,因为试图将一个长的字符串塞入为较短字符串留出的空间。
显然有这么欣赏我理解这个任何帮助,这是怎么回事这里的基本误解。
不应该这样被标记为“C++”和“c-字符串”,而不是“C”和“串”?这个问题是关于C++,而不是关于C. – 2011-11-15 20:56:43
@WTP - 你是对的,我已经相应地编辑了标签。 – TheOx