首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于内存分配的memset?

用于内存分配的memset?
EN

Stack Overflow用户
提问于 2011-05-19 18:59:13
回答 3查看 5.4K关注 0票数 0

我在msdn上看到了这个例子:

http://msdn.microsoft.com/en-us/library/ms894209.aspx

代码语言:javascript
复制
DWORD dwResult;

MEMORY_BASIC_INFORMATION mbiMemory;

// Clear the results structure.
memset (&mbiMemory, 0, sizeof(MEMORY_BASIC_INFORMATION));

dwResult = VirtualQuery (lpPage,        // Page to examine
                     &mbiMemory,    // Structure for results
                     sizeof(MEMORY_BASIC_INFORMATION));

if (sizeof(MEMORY_BASIC_INFORMATION) != dwResult)
{

    // Your error-handling code goes here.

}

似乎他们使用memset作为向mbiMemory分配内存的一种方式。可以吗?我是不是会这样擦过一些内存?谢谢!

EN

回答 3

Stack Overflow用户

发布于 2011-05-19 19:02:14

不,它们不分配内存,它们只是重置结构以包含全零,以便它被初始化为某种已知状态,并且程序以可重现的方式运行。因为它们只覆盖结构(sizeof作为“字节数”传递),所以它们不会溢出任何东西。

票数 8
EN

Stack Overflow用户

发布于 2011-05-19 19:02:16

不是的。INFORMATION mbiMemory是一个automatic variable。它是一个结构,它是在堆栈上分配的。就像你写了int foo一样。

票数 0
EN

Stack Overflow用户

发布于 2011-05-19 19:02:33

内存在堆栈上的分配方式如下:

代码语言:javascript
复制
MEMORY_BASIC_INFORMATION mbiMemory;

内存集正在清除已分配给零的内存。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6057596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档