社区
汇编语言
帖子详情
win32 asm 如何像C语言的malloc一样 申请内存空间呢?
aiyaya730
2011-10-21 12:21:03
想用win32 asm实现一个动态的链表,
需要动态地申请内存.
请问WIN32 ASM 如何申请内存呢?
是不是用 VirtualAlloc这个API ?
另外
C 的malloc ,C++ 的 new
在Windows上的本质,是调用 API 申请内存的么?
API申请内存的本质,是调用中断么?
我这么理解对么?
...全文
276
6
打赏
收藏
win32 asm 如何像C语言的malloc一样 申请内存空间呢?
想用win32 asm实现一个动态的链表, 需要动态地申请内存. 请问WIN32 ASM 如何申请内存呢? 是不是用 VirtualAlloc这个API ? 另外 C 的malloc ,C++ 的 new 在Windows上的本质,是调用 API 申请内存的么? API申请内存的本质,是调用中断么? 我这么理解对么?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用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。
C语言
核心概念与内存管理深度解析
指针和内存管理是
C语言
编程的核心基础,理解这些概念对于编写高效、健壮的系统级代码至关重要。指针本质上是内存地址的抽象,通过指针运算可以直接操作内存,这在系统编程和嵌入式开发中尤为重要。内存管理则涉及栈、堆等不同内存区域的分配与释放,合理使用内存池等技术可以显著提升程序性能。在实际工程中,这些技术广泛应用于操作系统开发、嵌入式系统、高性能计算等领域。掌握
C语言
的底层原理,能够帮助开发者更好地进行工业级嵌入式系统开发和系统级编程。
【
C语言
-编程指南】
C语言
相关的知识点
VSCode配置C/C++教程(详细、有资源)
本文详细介绍了在Windows系统下使用VS Code配置C/C++开发环境的完整流程。 VS Code的下载与安装(推荐系统安装版)、必备插件安装(汉化和C/C++扩展包)、C/C++编译过程的四个阶段解析(预处理→编译→汇编→链接)。 文章通过一个包含多文件结构的示例工程,详细说明了三个核心配置文件的用途:c_cpp_properties.json(代码智能感知)、tasks.json(编译构建)和launch.json(调试运行)。MinGW-w64和MSVC两种工具链都有介绍
STM32裸机开发:基于GCC工具链的环境搭建与Makefile实战
在嵌入式系统开发中,编译工具链是连接源代码与硬件执行的关键桥梁。GCC(GNU Compiler Collection)作为一款开源、跨平台的编译器集合,其工作原理是将C/C++等高级语言通过预处理、编译、汇编、链接等阶段,最终生成目标处理器可执行的二进制文件。掌握GCC工具链,特别是针对ARM Cortex-M内核的arm-none-eabi-gcc,不仅能实现对编译过程的精细控制,还能深入理解代码优化、内存布局等底层机制,这对于追求代码尺寸、性能及可移植性的嵌入式项目具有重要价值。在常见的应用场景中,如
Heartbleed漏洞深度解析:原理、利用与纵深防御体系
Heartbleed(CVE-2014-0160)是一种基于TLS心跳扩展的内存越界读取漏洞,本质是OpenSSL在处理heartbeat请求时缺失payload长度校验,导致攻击者可静默窃取64KB服务端堆内存数据。其技术价值在于暴露了开源密码库在边界检查、内存安全与依赖治理上的系统性风险。典型应用场景涵盖HTTPS Web服务、邮件协议(SMTP/POP3)、数据库SSL连接、SSL VPN网关及IoT固件通信——凡链接漏洞版本OpenSSL(1.0.1a–1.0.1f、1.0.2-beta1)的组件均
汇编语言
21,500
社区成员
41,619
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章