领导要我开发个网络方面的程序,只发网络UDP心跳包的工作,但是内存用量不能超过500K

iorikingdom 2009-06-18 05:15:26
领导要我开发个网络方面的程序,只发网络UDP心跳包的工作,但是内存用量不能超过500K,
除了用汇编,还可以用什么比较快的开发手法?
因为客户的机子是远程终端,虽然说用service是最好的方法,但是之前我用service出过问题,重启之类的处理手续很麻烦
现在死活不肯让我用service
...全文
96 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
iorikingdom 2009-06-23
  • 打赏
  • 举报
回复
谢谢各位兄弟,正如lisunlin0所说
因为GUI程序在系统里面是静态连接的,只要关系到GUI的程序,事先分配的堆栈不会低于2M
我跟领导报告了500K实现的困难性,现在考虑用Service的方式了,稍后结贴
但是问题又来了,哎。。。。
http://topic.csdn.net/u/20090623/17/247d379b-4d9f-47cc-ae83-4f8823a0445e.html
另外一贴
还是Windows Service多用户界面程序的问题
microyzy 2009-06-20
  • 打赏
  • 举报
回复
以上的汇编占用内存和c应该没太大区别吧?另外我觉得堆栈的空间应该不在内存容量的计算范围内。
也许从PE文件的结构入手会有新想法。
microyzy 2009-06-19
  • 打赏
  • 举报
回复
看来心跳是其次,500k才是首要,我没做过这么小的程序,我觉得要专用的c编译器或者特别的编译选项才能达到吧,或者用汇编。
qq14923349 2009-06-19
  • 打赏
  • 举报
回复
经常查内存吧
要知道当初C的字符串标准也是没处理溢出的

很多东西都要靠自己控制
iorikingdom 2009-06-19
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 homesos 的回复:]
文件尺寸 500K 绝对足够了,
内存用量500K,没具体实践过这样的程序,不太清楚,大不了搞个SetProcessWorkingSetSize()把内存转到硬盘上,就是有点不厚道。

最好还是能了解一下为什么会有这样的限制,才会有具体的对策。
[/Quote]

他们那边的工人可以监视到内存swap的频率,迟早会东窗事发的
百事烟 2009-06-19
  • 打赏
  • 举报
回复
呵呵,没试过,和老板商议下,把心跳做为1个模块合并到其它程序中....

要不就
main()?

liangxd09 2009-06-19
  • 打赏
  • 举报
回复
这么抠门,资源部要那么省,留点余地。就说 做不了,把责任推掉。
jyh_baoding 2009-06-19
  • 打赏
  • 举报
回复
500K不管能不能做,限制没道理!
homesos 2009-06-19
  • 打赏
  • 举报
回复
文件尺寸 500K 绝对足够了,
内存用量500K,没具体实践过这样的程序,不太清楚,大不了搞个SetProcessWorkingSetSize()把内存转到硬盘上,就是有点不厚道。

最好还是能了解一下为什么会有这样的限制,才会有具体的对策。
sunlin7 2009-06-19
  • 打赏
  • 举报
回复
你随便你个汇编版的MessageBox,弹出来后看看内存用量---- 1024K以上! 因为windows xp sp2默认为进行分配1M的堆, 1M的栈。
编写:
      .486                      ; create 32 bit code
.model flat, stdcall ; 32 bit memory model
option casemap :none ; case sensitive

includelib kernel32.lib

externdef _imp__Sleep@4:PTR pr1

.code

start:
push 5000
call _imp__Sleep@4
ret
end start


[code=BatchFile]call masm
ml /c /coff a.asm
link /subsystem:windows /heap:4,4 /stack:4 a.obj
del *.obj[/code]
生成a.exe
运行时内存占用460K!
所以单从楼主现在的描述看来是没有办法达到要求的。
qq845284425 2009-06-18
  • 打赏
  • 举报
回复

mark
softist 2009-06-18
  • 打赏
  • 举报
回复
1 用VC编UDP通讯最多也就几十K的执行程序。
2 内存用量不能超过500K 的理由是什么?
3 NotifyIcon这样的功能一点都不费内存。

结论:没有太大问题,不过你还是应该好好教教你的领导,取消500K的限制,尽管你只可能用400K。
zteclx 2009-06-18
  • 打赏
  • 举报
回复
干嘛一定要不超过500K?现在的计算机资源很丰富呀,动辄上G呀
NTooL 2009-06-18
  • 打赏
  • 举报
回复
是不是想把你fire掉啊。做好心理准备。
一笑拔剑 2009-06-18
  • 打赏
  • 举报
回复
内存大小和文件大小没关系吧

至于内存用量不能大于500k

恩 相当有难度的事情

汇编也难
zoulie 2009-06-18
  • 打赏
  • 举报
回复
用32位汇编看看,其实跟SDK差不多
我辣椒哥 2009-06-18
  • 打赏
  • 举报
回复
汇编成功把握性比较大
skyxie 2009-06-18
  • 打赏
  • 举报
回复
实在不行就用win32汇编...其实和SDK差别不是很大...

罗云彬牛牛的一个闹钟程序,功能挺多的,大小才几十k, 是个tray icon + dialog的程序, 开源的
udknight 2009-06-18
  • 打赏
  • 举报
回复
500K?是不是考验你能力啊。 要实现任务栏停靠的话,500K有点悬。楼主你试试吧。看看最后写出来的有多大
iorikingdom 2009-06-18
  • 打赏
  • 举报
回复
GUI倒是不需要,不过需要NotifyIcon,就是右下角那个那个ICON
也算是个UI吧
加载更多回复(3)

16,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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