课本的范例疑问~~WIN32程序

hyq_1756 2014-04-27 11:28:20
case WM_SIZE:
if(message==WM_SIZE)
{ cxClient=LOWORD(lParam);
cyClient=HIWORD(lParam); }
cxBuffer=max(1,cxClient / cxChar);
cyBuffer=max(1,cyClient / cyChar);
if(pBuffer!=NULL)
free(pBuffer);
pBuffer=(TCHAR *) malloc(cxBuffer * cyBuffer * sizeof(TCHAR));

我想问一下,为什么需要max(1,cxClient / cxChar)和max(1,cyClient / cyChar)???就是起到一个限定它不为零??
是因为malloc函数参数不能为零,所以要限定一下???假如说,没有这个限定,那当客户区大小为零时,会发生什么情况??
...全文
90 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyq_1756 2014-04-27
  • 打赏
  • 举报
回复
有人解释么?是太简单了我太傻?求指教,即使被骂傻子我也想知道问题所在啊~~~~
hyq_1756 2014-04-27
  • 打赏
  • 举报
回复
引用 2 楼 b971049 的回复:
malloc参数可以为0。范例代码范围没有什么地方需要做这个限制。但是有可能在其它地方需要这个限制。 max(1,cxClient / cxChar)是限制它不能小于1,不单是0,负数也不行。
谢谢!~~~那我再想想~后文~~~
b971049 2014-04-27
  • 打赏
  • 举报
回复
malloc参数可以为0。范例代码范围没有什么地方需要做这个限制。但是有可能在其它地方需要这个限制。 max(1,cxClient / cxChar)是限制它不能小于1,不单是0,负数也不行。

65,209

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧