• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
夜真寒
博客园    首页    新随笔    联系   管理    订阅  订阅
2011年11月16日
堆(heap)和栈(stack)
摘要: 1、管理方式不同:栈(stack)由编译器管理;堆(heap)由程序员管理。2、空间大小不同:win32中,堆(heap)可达4G;VC中栈默认1M(可以修改)。3、碎片问题:堆(heap)易产生;栈(stack)不会。4、生长方向不同:堆(heap)生长方向是向上的,也就是向着内存增加的方向;栈(stack)相反。5、分配方式不同:堆(heap)是动态的,没有静态的堆;栈(stack)有两种:动态和静态。6、分配效率不同:栈(stack),系统提供底层支持,有专门的寄存器存放栈地址,效率高;堆(heap),由库函数提供支持,效率底。一般认为在c中分为这几个存储区1栈 - 有编译器自动分配释放 阅读全文
posted @ 2011-11-16 00:54 夜真寒 阅读(1007) 评论(0) 推荐(1)
实例 C语言Printf格式
摘要: 使用printf打印时发现,如果数据类型和打印使用的类型不一致,结果就是混乱的。这是因为printf本身并不进行数据的类型转换,他只是把输入按照给定的数据格式输出,如果二者不匹配,那么由于不同数据类型的二进制存储方式不一样,读出的数据就是错误的。所以,为求稳妥,在使用printf,fprintf,scanf,fscanf在类型不一致时还是手动转化吧! printf("%f\n",1.3); printf("%d %f\n",1.3,1.3);打印结果:1.300000-858993459 -92559653408872784000000000000000 阅读全文
posted @ 2011-11-16 00:53 夜真寒 阅读(6144) 评论(0) 推荐(0)
C语言的内存的分配机制
摘要: 指向字符串常量的指针和字符串数组在使用时是有区别的。看下面两个函数//执行通过,返回“hello world”char *PtrChar(){ char *pc = "hello world"; return *r;}//执行错误,不能返回局部变量char *ArrChar(){ char ac[] = "hello world"; return ac;}出现上面的原因在于指针pc指向的字符串“hello world”存放在文字常量区,而数组ac中存放的字符串存放在栈区,当函数结束时,栈中的数据自动释放。再看下面:char* r = "hell 阅读全文
posted @ 2011-11-16 00:02 夜真寒 阅读(3163) 评论(1) 推荐(1)
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3