win32 asm 如何像C语言的malloc一样 申请内存空间呢?

aiyaya730 2011-10-21 12:21:03
想用win32 asm实现一个动态的链表,
需要动态地申请内存.

请问WIN32 ASM 如何申请内存呢?
是不是用 VirtualAlloc这个API ?

另外
C 的malloc ,C++ 的 new
在Windows上的本质,是调用 API 申请内存的么?

API申请内存的本质,是调用中断么?

我这么理解对么?
...全文
224 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
aiyaya730 2011-10-21
  • 打赏
  • 举报
回复
谢谢楼上回复!

请问
GlobalAlloc()根
VirtualAlloc()有什么区别呢?

我在看罗云彬那本书,
把各种Alloc都介绍了一遍,
但是到最后我也没太明白,我想动态分配内存的时候具体应该用哪个.

书里还说内存Lock和UnLock的问题
我在想,C语言里也从来没提过内存是不是Lock
我如果作个简单的应用,
是不是可以不必考虑 Lock和不 Lock 的问题呢?
zara 2011-10-21
  • 打赏
  • 举报
回复
用 GlobalAlloc() 吧,省事儿;况且,现在的内存资源,富裕得很,远不似上古期那般紧张。
aiyaya730 2011-10-21
  • 打赏
  • 举报
回复
好吧.谢谢楼上各位的帮助.
晚上有空的时候我试试!
killbug2004 2011-10-21
  • 打赏
  • 举报
回复
用malloc的话有两种方法
1、先自己在代码里面声明函数原型,然后直接调用
malloc Proto C :DWord
free Proto C :DWord

2、使用masm32这个包里面声明好的invoke crt_malloc、invoke crt_free
include msvcrt.inc
includelib msvcrt.lib

这些是运行msvcrt中的运行时函数,也可以直接使用VirtualAlloc,GloableAlloc,HeapAlloc这些系统API,
可参考MSDN
aiyaya730 2011-10-21
  • 打赏
  • 举报
回复
谢谢楼上!

你的意思是,
在汇编里,也可以
invoke malloc这个函数马?
gsy999 2011-10-21
  • 打赏
  • 举报
回复
[Quote=引用楼主 korekara88730 的回复:]
想用win32 asm实现一个动态的链表,
需要动态地申请内存.

请问WIN32 ASM 如何申请内存呢?
是不是用 VirtualAlloc这个API ?

另外
C 的malloc ,C++ 的 new
在Windows上的本质,是调用 API 申请内存的么?

API申请内存的本质,是调用中断么?

我这么理解对么?
[/Quote]
可以有多种方法申请和施放内存
如果使用 MSVCRT.DLL 库,可以使用下面两个函数:

malloc 申请内存 (对应C++的 new)
free 释放 (C++所用的)

具体用法可参见MSDN的文档。
--------------
罗云彬《Win32汇编...》一书所讲的方法也可使用,直接调用 Win32 API。

21,453

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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