2013年12月7日

C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区【转】

摘要: 本文来源:http://www.cnblogs.com/dongsheng/p/3443696.html 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。堆可以动态地扩展和收缩。 自由存储区,就是那些由ma... 阅读全文

posted @ 2013-12-07 13:41 华山青竹 阅读(139) 评论(0) 推荐(0) 编辑

比较两个浮点数的大小关系

摘要: /*==============================================================================实数运算中,经常需要判断实数x和y是否相等。编程者往往把判断的条件简单设成x==y或者y-x==0.实际上,这种写法是有失偏颇的,可能会产生精度误差。避免精度误差的办法就是设置一个精度常量delta。若y-x的实数值与0之间的区间长度小于delta,则认为x和y相等,这样就可以把误差控制在delta范围内。显然,判断实数x和y是否相等的条件应设成|x-y| 2 #include 3 int main() 4 { 5 float ... 阅读全文

posted @ 2013-12-07 12:02 华山青竹 阅读(3849) 评论(0) 推荐(1) 编辑

OpenJudge计算概论-求一元二次方程的根【含复数根的计算、浮点数与0的大小比较】

摘要: /*======================================================================求一元二次方程的根总时间限制: 1000ms 内存限制: 65536kB描述利用公式x1 = (-b + sqrt(b*b-4*a*c))/(2*a), x2 = (-b - sqrt(b*b-4*a*c))/(2*a)求一元二次方程ax^2 + bx + c =0的根,其中a不等于0。输入第一行是待解方程的数目n。 其余n行每行含三个浮点数a, b, c(它们之间用空格隔开),分别表示方程ax2 + bx + c =0的系数。输出输出共有n行,每行是 阅读全文

posted @ 2013-12-07 11:51 华山青竹 阅读(2531) 评论(0) 推荐(0) 编辑

导航