您的位置:程序门 -> c/c++ -> c++ 语言



c++是在什么时候给变量分配的内存。


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


c++是在什么时候给变量分配的内存。
发表于:2008-01-22 16:03:38 楼主
是声明的时候吗?
为什么int   a;   int   b=a;
这句话是不安全的?
那debug版的时候,还要报不赋初值的错;而release版没事。
难道要求给变量赋初值仅仅是怕用错了?
发表于:2008-01-22 16:08:431楼 得分:0
分配内存当然是要到程序运行的时候。
debug倾向于假设你总在犯错,release倾向于假设你总没犯错。
如果你也认为自己不会用错,就可以无视编译器给的信息。
发表于:2008-01-22 16:19:202楼 得分:0
问题是程序运行到什么时候分配的。是在int   a;这句代码对应的地方。还是   a=0;对应的地方
我怎么记着出现过不赋初值直接用,导致指针乱指的错误。
不赋初值   的危险何在?
发表于:2008-01-22 16:22:113楼 得分:0
在int   a;处
你把那个b的值给打印出来看看嘛,是你期望的值么。
发表于:2008-01-22 16:27:104楼 得分:0
如果你是写再类里的申明变量     那不分配内存
内存是再创建对象的时候分配的
所有   再类里定义变量   是不允许赋初值     只能再函数(构造函数里赋)
发表于:2008-01-22 17:37:115楼 得分:0
将     a的值   赋给   b   ,这里因为   a的值不确定   ,会是   其他程序使用下的内存   所留下的数据,是个随机的   值   。给变量   分配内存   是   动态分配的   是在创建   对象的时候   分配的。
发表于:2008-01-22 20:15:566楼 得分:0
在int   a的时候,就已经申请内存空间了。
但是如果int   a;intb=a;是连在一起的,那么此时a还没有赋值,是一个随机数;那么int   b=a,也将得到随机数,是没有意义的,还不如直接int   b。
赋不赋初值,只是编程习惯的问题,习惯赋初值不容易出错,而且可读性较高;
如果int   a;和int   b=a;中间有些间隔,那么别人在看代码的时候,只看到int   b=a,会以为此时b中是一个有意义的值,从而在后面可能导致错误。
发表于:2008-01-22 21:15:467楼 得分:0
通常你这段代码会出现某个函数当中。

函数中的变量是在栈上分配的,也就是说,进入函数以后,你的变量a会代表一块栈地址上的值,   退出函数以后,这段内存就被系统收回,下次其他函数进入式再分配给其他函数中得变量。   所以你如果不初始化,那么a的值,会是上次用到这块地址的一个变量的值,就是我们通常说得随机数。

至于为什么不自动初始化,是处于效率的原因。


快速检索

最新资讯
热门点击