memory相关内容
在C或C ++(视窗),你怎么看给人一种物理(非虚拟)地址RAM? 这意味着,没有去低谷虚拟内存系统(MMU表),并成为具体到一个进程。 我已经知道了API
..
我了解的算法来分配/释放动态二维数组,但我不是太肯定同为3D阵列。结果 利用这些知识,有点对称性,我想出了以下code。结果 (我有一个很难的3D可视化编码过程中)。 请上的正确性,如果任何意见和建议任何更好的选择(效率明智或直觉)。结果 另外,我觉得这两个二维和三维数组可以像正常一样arr2D [2] [3]和结果静态数组访问 arr3D [2] [3] [2]。对? code为2D
..
有人能解释一个跳转表的机制和为什么会在嵌入式系统需要? 解决方案 一个跳转表可以是一个指针数组功能或机器code跳转指令的数组。如果你有一个相对静态的功能集(比如系统呼叫或一类的虚函数),那么你可以创建这个表一次,并使用一个简单的索引数组调用的函数。这将意味着检索指针和调用功能或根据所用表的类型跳跃到机器code 在嵌入式编程这样做的好处是: 指数比机器code或指针存取效率更高,
..
可能重复:
..
我一直听说,在C你要真看你是如何管理内存。我仍然开始学习C,但迄今为止,我还没有做任何的内存管理相关活动所有..我总是幻想着有释放变量,并做各种丑恶的东西。但是,这似乎并不如此。 有人能告诉我(与code的例子)时,你将不得不做一些“内存管理”的例子吗? 解决方案 有两个地方变量可以把内存中。当你创建一个变量: int类型的; 焦炭℃; 字符D [16]; 该变量在创建了“栈”。
..
我在Visual Studio 2005编程用C我有一个多线程程序,但在这里,这不是特别重要。 我如何确定(大约)我的线程的堆栈使用多少空间? 我正打算使用的设置堆栈存储器的一些predetermined价值的技术,说0xDEADBEEF,运行程序很长一段时间,暂停该程序,调查堆栈。 我如何阅读和使用Visual Studio写堆栈内存? 编辑:见,例如, 有关嵌入式系统这个问题举行会谈,
..
我有一个插件架构,在那里我调用函数在一个动态库,他们还给我一个的char * 这就是答案,但在以后的阶段中。 这是一个插件功能的签名: 的char *执行(ALLOCATION_BEHAVIOR * free_returned_value,无符号整型*长); 其中, ALLOCATION_BEHAVIOR 必须是: DO_NOT_FREE_ME , FREE_ME , DELETE_M
..
在哪里malloc()和free()的存储分配的地址及其大小(Linux的GCC)?我读过一些实现实际分配的内存在什么地方存储它们,但我无法证实,在我的测试。 的背景下,也许有人有另一个提示此: 我尝试一点点,以便确定在其它处理的串的电流值进行分析的过程的堆存储器。 访问过程的堆内存,并通过它漫步是没有问题的。然而,由于该串的值更改和过程中的每个时间分配存储器的一个新的部分,该字符串的地址变
..
就像在标题,什么是一个连续的内存块? 解决方案 一个没有在它占据的地址没有任何间隙。你可能只认为这是一个“块”,而在中间的“两大块。”差距想起了什么 的术语以阵列的定义上来为“连续的”。这意味着元件被布置端至端,没有不连续性和它们之间没有填充(有可能是各元件内部填充,但不是元件之间)。因此5 4个字节元素的数组看起来像这样(每字节1下划线时,|符号不重新present内存): _
..
我工作的32位计算机上,所以我想,内存对齐应该是4个字节。说我有结构: typedef结构{ 无符号短V1; 无符号短V2; 无符号短V3; } MYSTRUCT; 真正的大小为6个字节,我想这对齐大小应为8,但的sizeof(MYSTRUCT)返回我6。 但是,如果我写的: typedef结构{ 无符号短V1; 无符号短V2; 无符号短V3
..
的#include<&stdio.h中GT;诠释主(){ 浮动= 1234.5f; 的printf(“%d个\\ N”,一); 返回0; } 它显示一个 0 !这怎么可能?什么是道理? 我特意放了%d个在的printf 语句学习的printf 。 解决方案 这是因为%d个预计的 INT 但您提供一个float。 使用%E / %F / %G 打印浮动。 在
..
在哪里是在完全相同的内存文字? (见下面的例子) 我不能修改文字,所以它会被认为一个const char *,但是编译器让我用它一个char *,我没有警告,甚至与大多数编译器标志。 而一个const char *类型为char *类型的隐式转换给了我一个警告,见下文(GCC上进行测试,但它VC ++ 2010年类似的行为)。 另外,如果我修改一个const char的值(下面,如果GCC会
..
我公司目前拥有大量多线程服务器应用程序,我正在挑选一种良好的多线程内存分配器。 到目前为止,我左右为难: Sun的umem 谷歌的tcmalloc 英特尔线程构建模块分配器 埃默里Berger的囤 从我发现囤积可能是最快的,但我没有听说过今天之前,所以我怀疑,如果它真的好,因为它看起来。任何人都有亲身经历尝试这些分配程序? 解决方案 我用tcmalloc和阅读有关囤积居
..
我理解的malloc()是如何工作的。我的问题是,我会看到这样的事情: 的#define A_MEGABYTE(1024 * 1024)字符* some_memory; 为size_t size_to_allocate = A_MEGABYTE; some_memory =(字符*)malloc的(size_to_allocate); sprintf的(some_memory,的“Hello W
..
我一直认为: 一个字符重新$ P $由一个字节psented, 一个字节总是在计数有8位, 是的sizeof(char)的总是 1 , 和内存的最大理论量我可以分配(计入字符 s)是RAM(+交换空间)的字节数。 但现在,我读过关于我不那么肯定了该字节的维基百科条目。 我的哪个假设之一(s)是错的?哪一个(s)是危险的? 解决方案 是字符和字节是pretty大同小异
..
例如,当我们称说,递归功能,连续调用被存储在堆栈中。然而,由于一个错误,如果它继续无限的错误是“分段错”(如看到GCC)。 难道不应该一直“堆栈溢出”?那么,什么是两者之间的基本区别? 顺便说一句,一个解释是不是维基百科链接(通过该走了,但没有回答具体查询)更有帮助。 解决方案 堆栈溢出是[A]的原因,段错误是结果。 至少在x86和ARM的“栈”是把局部变量和返回函数调用地址保留的一
..
如果我创建了一个新的大括号内的一个变量,是可变的弹出上右括号堆栈,或者它挂出,直到函数的结束?例如: 无效美孚(){ INT C [100]; { INT D [200]; } // code,它需要一段时间 返回; } 威尔 D 是 code,它需要一段时间节期间占用内存? 解决方案 没有,括号不作为堆栈帧。在C语言中,只有牙套表示一个命名范
..
的您最有可能看到这个问题,因为你的问题已经关闭的这个副本。对于相关问题,适度的完整列表,请参阅
..
由于我还没有找到一个答案的问题问previously这里我尝试了不同的方法。 有什么办法两个进程之间共享内存? 第二个进程会从注入的信息,因为它是一个传统的程序,它不再被支持。 我的想法是注入一些code那里,在我传递给注入程序通过地址(或其他)的地方,我需要运行数据所在的共享内存的结构。一旦我得到了我的数据将填充注射的线程中我自己的变量。 这可能吗? 怎么样? code是AP pre
..
假设我有一个字节B配11111111二进制值 例如如何做我读开始在第二位3位的整数值或写四个整数位值开始在第五位? 解决方案 2+的一些年后,我问这个问题,我想解释一下我所希望的方式解释它回来时,我还是一个完整的福利局和将是谁想要了解这个过程的人最有利的。 首先,忘记了“11111111”例如价值,这是不是真的那么适合该过程的可视化解释。因此,让我们的初始值是 10111011 (18
..