这是一个很隐蔽的错误
这个错误意思就是变量读取到的内存存放的数据类型实际上是字符序列,并不是变量类型所指定的数据类型。
出现这种错误的原因一般为:
char* buffer = (char*)malloc(sizeof(char) * 1024);
char *p = NULL;
当buffer中存放的数据超过1024字节会发生什么事情?
是的,p的值被buffer覆盖了,调试时查看p就会发现p不再是NULL,并且报错就是“error reading character of string。”
C++中我们还是尽量使用STL的容器,因为STL中的容器会自动扩容。如果上述代码为:
std::string buffer;
char *p = NULL;
相信不会再出现这种错误。