我正在玩一些cpp的基本东西。我是这种语言的新手......所以我警告说我的问题可能没有正确制定。我感谢任何帮助。此代码似乎追加分配范围以外的字符
的事情是,看到后的例子在www.cplusplus.com/reference/cstdlib/malloc/我发现我自己使用此代码:
#include <stdio.h>
int main (void) {
char *str;
str = (char*) malloc(2);
str[0] ='8';
str[1] ='8';
str[2] ='6';
str[3] ='\0';
printf ("%s\n",str);
}
并与编译:
gcc -O0 -pedantic -Wall test2.cpp
(gcc版本4.7.2)
我没有得到任何错误和输出886.为什么我没有得到任何错误?我没有通过分配空间的边界吗?
我没有得到任何错误,我得到了输出886.为什么没有错误?我没有通过分配空间的边界吗?
在代码没问题的情况下......为什么参考中的例子? 在另一个(更可能)的情况下......有什么风险?
谢谢!
任何像样的静态分析工具(例如cppcheck)都应该告诉你(我想即使是Eclipse CDT C++ SA解析器也可以)。 –
谢谢。离C++很远吗?主要区别是什么?新手如何区分彼此? (用fortran我花了几年的时间才知道sintax来自每个版本) – alexis
最简单的线索是使用'malloc'和'printf'。大多数C++代码使用'new'和'cout'。 –