指针使用时,注意事项
- 定义指针先初始化,如果不能确定指针指向,指向0(nullptr)地址;
- 如果指针没有指向,不能使用*运算符,指针也不能偏移;
- 使用指针时,先判断(判断指针是否为空)再使用;
- 指针操作字符串时,不能修改字符串的值(字符串在常量区,不能修改值)运行时可能导致程序崩溃
- 指针数组时,防止数组越界;
- 堆区内存,使用完以后释放该段内存,否则会出现内存泄漏(可能会蓝屏、死机)。
- 堆区内存释放完以后,必须置空。否则导致野指针(坏指针)(该指针指向非法的内存)
练习代码
int *p=nullptr;
if (p!=nullptr)
*p = 200;
char *pchar = "abcd";
//*pchar = 'd';修改常量区的数据
cout << pchar << endl;
char c[10] = "abcd";
//delete c;栈区的内存系统自动回收
pchar = c;
*pchar = 'd';
cout << pchar << endl;
/*
char str;
strcpy(&str, "abcd");//内存大小不够,运行时,导致程序崩溃
cout << str << endl;
*/
int *p1 = new int[20];
//p1指向的内存没有释放,导致内存泄漏
p1 = new int[40];
delete []p1;//释放内存,把堆区的内存归还给系统,指针变量的值没有改变.
//p1 = nullptr;
//没有置空导致p1是野指针
if (p1 != nullptr)
{
*p1= 200;
cout << *p1 << endl;
}