memory-management相关内容
如果你能帮助我这个两难我有。现在,我知道的C \\ C ++,我知道ASM,我知道dll注入,我是知道的虚拟内存寻址,但我只是无法弄清楚如何 像CheatEngine和其他软件,管理在另一个进程中改变一个变量的值。 对于那些不知道是谁,第三方作弊引擎工具可以在程序的内存空间扫描值与给定值确定一个变量的位置和改变它。 我的问题是,他们是如何做到的? 提供的地址,如果我是写C code,我
..
刚才说的问题,我该如何使用的mmap()来分配堆内存?这是我唯一的选择,因为的malloc()不是重入函数。 解决方案 为什么需要重入?它是唯一需要的时间是调用从信号处理功能;否则,线程安全的一样好。无论的malloc 和 MMAP 是线程安全的。也不是异步信号安全的每POSIX。在实践中, MMAP 可能工作正常从信号处理程序,而是从信号处理程序分配内存的整体思路是一个非常糟糕的主意。
..
我在寻找用C语言编写的一些(自定义),内存管理器/分配器,通过一些文章,去 - 有些链接: IBM - 内存管理内幕 Valgrind的 - 如何隐藏程序所使用的内存的每个字节 堆栈溢出的问题 - 自己写的内存管理器 斯内德制作 - nedmalloc首页 两级分离飞度(TLSF) - 网站 维基百科 - 动态内存分配 Fourmilab - 该BGET内存分配器 我有使
..
我读记忆文本作为编程的概念。在后面的章节之一,作者大量使用单词'舞台',但从来没有定义它。我搜索这个词的技术含义,但一无所获。下面是在笔者使用的术语是'竞技场'几个背景: “序列化的下一个例子包括一个叫做策略 内存分配从特定的舞台。“ “...内存泄漏处理或分配时,当这是非常有用的 从特定的舞台。“ “......如果我们要释放内存,然后我们会在释放 整个球馆。“ 笔
..
在其他地方的响应,我发现下面的代码片段: 在总体上是在C更好的有 来电者分配内存,而不是 被调用 - 因此,为什么strcpy的是一个“更好” 功能,在我看来,比的strdup。 我可以看到这是一个有效的模式,但为什么它会被认为是更好?在那里按照这种模式的优点?还是不行? 例如 最近,我已经写了,看起来像code了相当数量的: 结构美孚* A = foo_create();
..
看那code: #包括LT&;&stdio.h中GT; #包括LT&;&stdlib.h中GT; 无效的主要() { INT * P; p值= malloc的(6); p值= realloc的(P,10); 如果(P == NULL) { 的printf(“错误”); 出口(1); } } 拿这个例子为code,假定总内存为10字节,两个字节用于指针
..
我开发了一个内存泄漏压力的小应用程序: 的#include<&stdio.h中GT; #包括LT&;&stdlib.h中GT;INT主(INT ARGC,字符** argv的) { INT期= 0; INT大小= 40000001; 字符* BUF = NULL; 如果(ARGC→1)周期=的atoi(ARGV [1]); 如果(时间== 0)周期=
..
免费(STR); 的printf(“%d个\\ N”,STR-GT&;听众); 对printf的调用成功(如做其他任何调用STR的成员)。这怎么可能? 解决方案 您只差(联合国)幸运。这code表现出不确定的行为 - 任何事情都有可能发生,包括寻找像内存中不释放 存储器的是的释放,但在积极地清除它是没有意义的,因此它的原始内容很可能仍然存在。但是你不能依靠这一点。
..
可能重复:结果 realloc的()和malloc函数 #包括LT&;&stdio.h中GT; #包括LT&;&stdlib.h中GT; 无效的主要() { INT * P; p值= malloc的(6); p值= realloc的(P,10); 如果(P == NULL) { 的printf(“错误”); //什么时候p指向为null考虑我在PRGRM足够的空间
..
我创建一个C数组是这样的: unsigned char型colorComps [] = {2,3,22,55,9,1}; 我想传递给一个Objective-C对象的初始化。 所以,我认为我已经把阵列上的堆:为size_t arrayByteSize = numColorCompVals * sizeof的(无符号字符); 无符号字符* colorCompsHeap =(无符号字符*)mal
..
是如何存储在内存阵列的名字? 例如,如果我写的: 改编的char [10]; 数组项存储在内存中的虚拟地址开始&放大器;常用3 [0] 这实际上是改编的值,但如果是改编本身存储在哪里? 同样也适用于静态多维数组的行:改编的char [10] [20]; 改编本身也常用3 [0],ARR [1] ...改编[9]都是无地址本身 那么,是名保存? 解决方案 如果你的意思是在文字名称您
..
我使用的是斯威夫特编译器的桥接报头的功能调用,使用的malloc分配内存的C函数()。然后,它返回一个指向该内存。该函数的原型是这样的: 的char * the_function(为const char *); 在斯威夫特,我用它是这样的: VAR RET = the_function((“东西”作为的NSString).UTF8String)让VAL = String.fromCStrin
..
我有扫描文件,并返回一个字符串数组线沿线数的功能,我的功能看起来像这样: INT load_lines(字符* _file,焦炭** _array){ FILE * INFILE; 烧焦line_buffer [BUFSIZ]; 焦炭LINE_NUMBER; INFILE = FOPEN(_file,“R”); ine_number = 0; 而(与
..
如果我定义一个结构... 结构LinkNode { INT node_val; 结构LinkNode * next_node; }; ,然后创建一个指向它... 结构LinkNode * MYNODE =的malloc(sizeof的(结构LinkNode)); ...然后终于自由了()吧... 免费(MYNODE); ...我仍然可以访问结构的“next_node”成员
..
我发现,这种拒绝编译: INT test_alloc_stack(INT大小){ 如果(0)转到错误; //同样的问题,无论条件使用 INT申请【规格】; give_values(适用,大小); 返回1; 错误: 返回0; } 我得到的错误是:“跳进具有可变类型标识符的范围。” 消除了“转到”和跳转到错误解决了问题。行 如果我使用
..
在我的节目,我看到一些居民尺寸增加。我想这是因为堆碎片。 所以我打算使用的#pragma包1 。 这将减少堆不成? 会不会是有一些其他的开销? 我应该去为它或不? 解决方案 有一个名为内存池很好的验证技术 。它的设计特别是减少内存碎片和内存泄漏帮助。它应该在情况下使用,其中内存碎片变成的程序功能的瓶颈。 “杂包1”是没有帮助的,以避免堆碎片。 “杂组件1'用来从结构去除填充字节
..
对于那些用C经验丰富,这将是一个简单的内存分配/引用问题: 下面是我的数据结构: 结构configsection { 字符*名称; 无符号整型numopts; configoption *选择; }; typedef结构configsection configsection;结构CONFIGFILE { 无符号整型numsections; configs
..
如果我想移动的结构如下 TetrahedronStruct 来CUDA设备内存,我应该如何进行? 结构TetrahedronStruct { INT指数; INT区域; TriangleFaces工作面[4]; 顶点顶点[4]; 结构TetrahedronStruct * adjTetrahedrons [4]; };typedef结构{ 长双NX,NY,NZ; 长双
..
我已经经历了OpenCV的一些内存管理ambiguitys。 你可以用新的OpenCV的C ++类做到这一点: CV ::垫theimage = cvLoadImage(“rawimage.pgm”,CV_LOAD_IMAGE_ANYDEPTH); 现在我不明白,如果我这样做,我会得到一个错误: theimage.deallocate(); 也许这是错误的。我做了一些实验,当我释放垫
..
在尝试创造未来的C程序的内存管理器,我遇到了这个问题: 的“时结构分配,是存储在指定的顺序及其成员字段?”的 例如,请考虑下面的结构。 typedef结构{ 诠释FIELD1; 诠释域2; 烧焦FIELD3; } SOMETYPE; 当分配的,将字段的内存地址是在订单字段1,场2,FIELD3?或者,这是不能保证? 解决方案 简短的回答:他们被分配了订单,
..