CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

合适的堆栈大小问题。

楼主dislimit(风飘雪影)2002-08-03 19:55:22 在 C++ Builder / 基础类 提问

//---------------------------------------------------------------------------  
  #include   <conio.h>  
  #include   <iostream.h>  
  #pragma   hdrstop  
   
  //---------------------------------------------------------------------------  
   
  #pragma   argsused  
  int   main(int   argc,   char*   argv[])  
  {  
  char   *buffer;  
  int   column,row;  
  gotoxy(10,10);  
  cout<<"This   is   just   an   example!\n";  
  gotoxy(10,11);  
  cout<<"Width=24\n";  
  gotoxy(10,12);  
  cout<<"Hight=3\n";  
  column=25;  
  row=3;  
  buffer=new   char[column*row*4];   //改成2不行,因为堆栈设太小。  
  gettext(10,10,10+column,10+row,buffer);  
  puttext(50,20,50+column,20+row,buffer);  
  delete   buffer;  
  getch();  
  return   0;  
  }  
  //------------------------------------------------------------------------  
  以上程序中有注释的那行若改成  
  buffer=new   char[column*row*2];  
  在程序正常关闭是会出现非法读写错误。  
  根据专家提示可能是堆栈设置太小,改成×4果然OK!  
  可是我不明白×2为什么不够大? 问题点数:10、回复次数:5Top

1 楼jishiping(JSP 季世平)回复于 2002-08-03 20:44:39 得分 5

因为使用gettext时,包含起始点的坐标,所以你这儿的控件大小应该是:  
  (column+1)*(row+1)*2,用column*row*2就小了,用column*row*4就大了。  
  当然了,大了不会造成程序错误,小了会造成错误。Top

2 楼dislimit(风飘雪影)回复于 2002-08-04 11:07:17 得分 0

多谢指教!  
  不过恕我无知,算面积得話(column+1)*(row+1)就够了。  
  为什么还要×2呢?Top

3 楼jishiping(JSP 季世平)回复于 2002-08-04 15:21:35 得分 5

帮助里有说明。每个字符需要2个字节来存放,第一个字节存放字符,第二个  
  字节存放显示的属性(如字符颜色,是否高亮度,字符是否闪烁等)。Top

4 楼dislimit(风飘雪影)回复于 2002-08-04 21:23:25 得分 0

那么什么情况下需要2字节存放,什么时候只要1字节呢?Top

5 楼jishiping(JSP 季世平)回复于 2002-08-04 23:04:07 得分 0

上面不是说的很清楚了,使用gettext   和   puttext   时,由于除了字符本身之  
  外,还需要字符的显示属性,所以每个字符需要2个字节。在Windows下,有时  
  需要2个字节,有时需要1个字节。这要视具体情况而定。Top

相关问题

  • 怎样修改堆栈的大小
  • 堆 、?栈 、?堆栈
  • ************************************堆,栈,堆栈********************************
  • 如何在VC工程中设置堆栈大小?
  • 怎样知道当前程序的堆栈大小??? 100!!!100
  • 堆,栈?
  • VC如何看一个函数占用堆栈大小(明天中午就给分)
  • 关于lotus domino6.5.3 JAVA虚拟机堆栈大小的设置!?如果解决,另外100分相送!
  • 堆栈溢出
  • 堆栈溢出?

关键词

  • pragma
  • include
  • char

得分解答快速导航

  • 帖主:dislimit
  • jishiping
  • jishiping

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo