1、未定义标识符“count”
报错原因:在C++中,cout是标准输出流对象,用于将文本信息输出到控制台,其声明和定义在iostream中,需要引入相应的头文件语句。
解决办法:
#include <iostream>
using namespace std;
2、 C6001:使用未初始化的内存
报错原因:C6001表示使用了未初始化的内存,经常发生在没有正确初始化或者分配内存却使用的情况下,即使输出也可能输出在内存中残留的脏数据。
解决办法:
①如果是数组,在使用前对其进行初始化。
int arr[10];
for (int i = 0; i < 10; i++)
arr[i] = 0;
②如果是变量,在使用之前进行初始化。
int x = 0;
bool b = true;
if(b && x<10){
x++;
}
③如果是指针变量,在使用之前分配内存,并初始化为合适的值。
//涉及c++指针
int arr[5] = { 0,1,2,3,4 };
int* p = arr;
cout << "arr的地址:" << arr << endl;
cout << "p里面存储的地址:" << p << endl;
cout << "*p地址指向的内容:" << *p << endl;
运行结果:
3、C6011:取消对NULL指针“s”的引用
报错原因:使用malloc调用可能会返回null,忽略判断新创建的指针是否是空指针,会对内存造成威胁
解决方法:
①加一个if判断
LNode* s = (LNode*)malloc(sizeof(LNode));
//加空指针判断
if (s == NULL)
return 0;
s->data = 1;
s->next = NULL;
②用assert()检查字符串是否为空,空则报错,不空则正常,注意:该内置函数要在头文件<assert.h>下使用
#include <assert.h>
int main() {
LNode* s = (LNode*)malloc(sizeof(LNode));
//加空指针判断
assert(s);
s->data = 1;
s->next = NULL;
}