–释放了内存,却继续使用它
n起因:
–指针所指的内存被释放以后,并不表示指针会消亡
–其地址仍然不变(非NULL),只是该地址对应的内存是垃圾
–指向垃圾内存的指针是“野指针”
nchar* GetInput(void)
{
char s[80];
scanf("%s", s);
return s;
}
warning C4172: returning address of local variable or temporary
n输出乱码
nvoid GetInput(char* s)
{
scanf("%s", s);
}
#include
#include
void GetInput(char *p)
{
p = (char *)malloc(100);
}
程序崩溃,函数不能传递动态分配的内存?
–尽量把malloc集中在函数的入口处,free集中在函数的出口处
–如果free不能放在函数出口处,则指针free后立即设置为NULL
–不要把局部变量的地址作为返回值返回,因为该内存在函数体结束时被自动销毁
–指针要么初始化为NULL,要么是其指向合法的内存
2015职称计算机考试书PowerPoint2007中 .. 定价:¥45 优惠价:¥42 更多书籍 | |
2015年全国职称计算机考试教材(2007模 .. 定价:¥225 优惠价:¥213 更多书籍 |