C++ LocalAlloc() & LocalSize() & LocalFree ()
关于LocalAlloc function,参考:https://msdn.microsoft.com/en-us/library/windows/desktop/aa366723(v=vs.85).aspx
关于LocalSize function,参考:https://msdn.microsoft.com/en-us/library/windows/desktop/aa366745(v=vs.85).aspx
关于LocalFree function,参考:https://msdn.microsoft.com/en-us/library/windows/desktop/aa366730(v=vs.85).aspx
以下代码摘自:https://msdn.microsoft.com/en-us/library/windows/desktop/aa366723(v=vs.85).aspx
IDE: Code::Blocks 16.01
操作系统:Windows 7 x64
#include <windows.h>
#include <stdio.h>
#include <tchar.h> int _cdecl _tmain()
{
LPTSTR pszBuf = NULL; pszBuf = (LPTSTR)LocalAlloc(
LPTR,
MAX_PATH * sizeof(TCHAR)); // Handle error condition
if (pszBuf == NULL)
{
_tprintf(TEXT("LocalAlloc failed (%ld)\n"), GetLastError());
return ;
} //see how much memory was allocated
_tprintf(TEXT("LocalAlloc allocated %d bytes\n"), LocalSize(pszBuf)); // Use the memory allocated // Free the memory when finished with it
LocalFree(pszBuf); return ;
}
在Code::Blocks 16.01中的运行结果:
IDE: Microsoft Visual Studio Community 2017 15.5.2
操作系统:Windows 7 x64
#include "stdafx.h" #include <windows.h>
//#include <stdio.h>
//#include <tchar.h> int _cdecl _tmain()
{
LPTSTR pszBuf = NULL; pszBuf = (LPTSTR)LocalAlloc(
LPTR,
MAX_PATH * sizeof(TCHAR)); // Handle error condition
if (pszBuf == NULL)
{
_tprintf(TEXT("LocalAlloc failed (%d)\n"), GetLastError());
return ;
} //see how much memory was allocated
_tprintf(TEXT("LocalAlloc allocated %d bytes\n"), LocalSize(pszBuf)); // Use the memory allocated // Free the memory when finished with it
LocalFree(pszBuf); getchar(); return ;
}
在Microsoft Visual Studio Community 2017 15.5.2中的运行结果:
造成两个IDE的运行结果不一样的原因,是因为TCHAR在两个IDE中的定义不一样。
在Code::Blocks 16.01中,TCHAR是这样定义的:
typedef CHAR TCHAR;
typedef char CHAR;
而在Microsoft Visual Studio Community 2017 15.5.2中,则是这样的:
typedef wchar_t TCHAR;
关于LPTR,在Code::Blocks 16.01中,是这样定义的:
#define LPTR 64
而在Microsoft Visual Studio Community 2017 15.5.2中,则这样:
#define LPTR (LMEM_FIXED | LMEM_ZEROINIT)
#define LMEM_FIXED 0x0000
#define LMEM_ZEROINIT 0x0040
两者是等效的,不过Microsoft Visual Studio Community 2017 15.5.2的定义则比较清晰,一目了然。
关于LMEM_FIXED:Allocates fixed memory. The return value is a pointer to the memory object.
关于LMEM_ZEROINIT:Initializes memory contents to zero.
C++ LocalAlloc() & LocalSize() & LocalFree ()的更多相关文章
- Win内存分配函数(GlobalAlloc/HeapAlloc/LocalAlloc/VirtualAlloc)
Win内存分配函数(GlobalAlloc/HeapAlloc/LocalAlloc/VirtualAlloc) 来源:http://blog.csdn.net/chunyexiyu/article/ ...
- delete this及堆破坏检测方法
作者: Bruce 日期: 2012年06月03日 04:20 周日 发表评论 (0) 查看评论 --END*1--> 0 条评论 --END*2-->1,837 人阅读 程序BU ...
- Windows Vista for Developers——第四部分:用户帐号控制(User Account Control,UAC)
作者:Kenny Kerr 翻译:Dflying Chen 原文:http://weblogs.asp.net/kennykerr/archive/2006/09/29/Windows-Vista-f ...
- 关于内存的5个函数(malloc,VirtualAlloc,GlobalAlloc,LocalAlloc,HeapAlloc)
VirtualAlloc 该函数的功能是在调用进程的虚地址空间,预定或者提交一部分页,如果用于内存分配的话,并且分配类型未指定MEM_RESET,则系统将自动设置为0 一次分配 1PAGE 以上的 R ...
- HeapAlloc,GlobalAlloc,LocalAlloc,VirtualAlloc,malloc,new的异同
1. 首先我们来看HeapAlloc: MSDN上的解释为:HeapALloc是从堆上分配一块内存,且分配的内存是不可移动的(即如果没有连续的空间能满足分配的大小,程序不能将其他零散的 空间利用起来, ...
- C#封装好的Win32API
Kernel.cs using System; using System.Runtime.InteropServices; using System.Text; using HANDLE = Syst ...
- Windows、Linux下文件操作(写、删除)错误的产生原因、及解决方法
catalog . 引言 . Linux平台上涉及的File IO操作 . Windows平台上涉及的File IO操作 0. 引言 本文试图讨论在windows.linux操作系统上基于C库进行文件 ...
- 英文不好也能快速"记忆" API
英文不好不要紧,把API函数导入打字练习类软件,即是练习打字速度,提高编程效率:也能短时间记忆API. 坚持每天打一遍,约2小时,连续打两周,会对API有很好的记忆,此方法是结合英文学习方法!以下是W ...
- Delphi内存操作API函数(备查,并一一学习)
Delphi内存操作API函数System.IsMemoryManagerSet;System.Move;System.New;System.ReallocMem;System.ReallocMemo ...
随机推荐
- constraintLayout的一些高级用法 布局一个16:9的图片 以及GuideLine的使用
<!-- "W,9:16" 同样的效果 --> <ImageView android:layout_width="0dp" android:l ...
- mysql原理~创建用户的那些事情
一 简介:mysql是如何创建用户的二 基本语法: 1 grant 权限 on db.table to 'user'@'ip' identified by 'password' 目的 创建用 ...
- python selenium+phantomJS自动化测试环境
0x00配置phantomJS 1. 在windows平台下 此种方法是弹浏览器进行自动化测试的. 1.下载谷歌的驱动 https://chromedriver.storage.googleapis. ...
- linux 文件搜索命令
- python - zipfile模块
import zipfile # f=zipfile.ZipFile(filename, mode="r", compression=ZIP_STORED, allowZip64= ...
- Django学习手册 - 如何安装django 和 python ?
整体步骤阐述:(windows环境下) 步骤一,下载python安装包 (和 jiango 压缩包) 步骤二,安装python 配置python的环境变量 步骤三,安装djang 方式一:pip in ...
- python编程 之 PyMysql包接口,python中如何使用数据库
1,环境介绍 要求:使用数据库TESTDB.EMPLOYMENT EMPLOYEE表字段为 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME. 2,基本用法: impo ...
- pythonのpygame安装
本地环境: python 3.7.0 windows7 64bit pip pygame地址: https://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame 通 ...
- k64 datasheet学习笔记10---Signal Multiplexing and Signal Descriptions
1.前言 本文主要描述多功能引脚相关的内容,包括5个32位的引脚的端口,每个32pin端口被指定一个中断 2.Signal Multiplexing Integration 3. Port contr ...
- ping 丢包或不通时链路测试说明【转】
转自:https://help.aliyun.com/knowledge_detail/40573.html?spm=5176.2020520165.121.d157.4fe170291Qdp4l#W ...