int main(){
char str = "hello";
printf("str is: %s\n",str);
}
这个极为简单的代码是我最近由于粗心写错了的,但是编译的时候不会报错。往往编译不报错的错误,但是运行的时候出错,是最让人无从下手检查的。而这一类问题大部分出在内存这块,像我这里简单的例子就是一个典型:
给一个字符类型的变量赋超过长度为1的多个字符,(把单个字符看作是字符数组的话)很显然超出数组长度。
对于整型数组,初始化的时候超出数组长度的赋值是会在编译时期报错
int main(){
int a[2] = {1,2,3};
}
编译时:error C2078: too many initializers
后续会补充更多遇到的这类问题,会更详细的分析,具体为什么程序执行的时候会中断。
上述这些仅作为个人积累,有错误,希望拍砖。