读书人

关于指针的风险的一点疑问

发布时间: 2012-09-09 09:27:54 作者: rapoo

关于指针的危险的一点疑问
C++ primer plus 93页谈到指针的危险:
long* fellow;
*fellow = 223323;
这个赋值是危险的,原因是第二步有可能会修改计算机内存中有用的数值,那么如果要正常赋值的话,是需要先声明fellow呢,还是不仅要声明fellow还要给fellow赋值呢?

[解决办法]
C++ primer plus之所以说这段代码写法是危险的,愿意是在声明操作:long* fellow;语句中系统会为fellow随即赋值,意思就是这个指针会指向一个随即内存地址,假如随机指向的内存地址是系统使用的,接下来的赋值操作会改变该内存地址上的值并引发系统错误。建议写法:
long* fellow = NULL;
//分配内存操作
fellow = (long *)malloc(sizeof(long));
*fellow = 223323;
//使用变量fellow操作
.......

//释放内存(必须)
free(fellow);
fellow = NULL;

读书人网 >C++

热点推荐