memory-management相关内容

使用的realloc(X,0),而不是免费的(),并使用malloc一个字符串+1的长度

所以,我真的不知道如何把标题这个时候。首先我想说,我已经看到了这个网页有关,如果问题是有关“功课”的警示几个意见。 我的是,但它也完成了,我只是想进一步了解正在发生的事情与code。 我也看过一段时间的帖子和书,但我想我仍然失踪的事情。 我有2行code的我不太在code和我一起工作理解。这项工作是关于让任何文件作为参数(如果是0的文件,从标准输入读取),并将其打印在标准输出倒退。所有这一切 ..
发布时间:2016-08-18 15:14:17 C/C++

如何分配FORTRAN例程QUOT里的数组,称为QUOT;从C

我觉得标题说我需要什么。我知道我们可以用“ASD”功能来做到这一点,但由于某些原因,我需要做的Fortran语言分配(即子程序“asd_”)。这里是C code: 的#include<&stdio.h中GT;无效的ASD(浮动** C){ * C =(浮点*)malloc的(2 * sizeof的(浮动)); ** C = 123; *(* C + 1)= 1234; }无效a ..
发布时间:2016-08-18 15:13:19 C/C++

是否指针传递给free()必须指向内存块的开始,也可以指向内部?

问题是在标题...我搜查,但没有找到任何东西。 编辑: 我真的没有看到任何需要解释这个,而是因为人们认为我在说什么是没有意义的(以及我问错了问题),这里有一个问题: 由于人们似乎的非常的兴趣在所有的问题,而不是问实际问题的“根”的原因(因为这显然有助于事情得到更好地解决,让我们看看它)这里有一个问题: 我试图使基于NTDLL.DLL A D运行时库,这样我就可以使用该库比Win32子系统等 ..
发布时间:2016-08-18 15:10:27 C/C++

一个电话可以自由(c)中曾经失败?

可以将呼叫免费()以任何方式失败了? 例如: 免费(NULL); 解决方案 舷NULL指针不能失败。和免费不会返回任何错误,但释放未分配的内存,已经释放的内存或分配块的中间是未定义的行为 - 这可能导致内存错误,程序可能会中止(或更糟的是,它会破坏堆结构和系统崩溃后)。 或者,甚至比这更糟的是,保持运行,但完全破坏你的数据,并将其写入到磁盘,没有你实现: - ) 标准(C99)的相关部 ..
发布时间:2016-08-18 15:05:07 C/C++

函数返回字符指针

我遇到了很多在一个遗留应用程序返回字符指针的函数。 有些把他们送回指向本地字符数组。这似乎是经过多次的调用导致崩溃(不会马上!)请参见下面使用 的char * F1(){ 字符的buff [20]; 字符* PTR; ---- ---- PTR = BUFF; 返回PTR; }--- ---F2(F1()); F1()返回一个指向局部变量,然后把它传递给另一个函数。我 ..
发布时间:2016-08-18 14:53:17 C/C++

如何归零后的realloc新内存

什么是调用realloc的同时保持初始分配的内存完好无损后零出新的记忆的最佳方式? 的#include<&stdlib.h中GT; #包括LT&;&ASSERT.H GT; #包括LT&;&string.h中GT; #包括LT&;&stdio.h中GT;为size_t COLORCOUNT = 4;typedef结构rgb_t { INT R; INT克; INT ..
发布时间:2016-08-18 14:52:16 C/C++

如何找到多少空间是通过调用分配到的malloc()?

我试图写一个函数的大小是这样的: 尺寸(无效* P,INT大小); 这将返回这是由p指向数组的大小。例如:智力* A =的malloc((的sizeof(int)的* 100)); 大小(一,sizeof的(INT)); //这应该返回100 我认为这是可能的,因为如果我还记得,malloc的跟踪一些头字节分配的空间。 下面是我到目前为止有: INT大小(无效* P,INT大小) { ..
发布时间:2016-08-18 14:50:25 C/C++

它是可以接受的不释放内存

我的工作是应该通过命令行中使用下面的语法项目: 程序名输入文件 该计划应该处理输入,计算一些东西吐出结果在标准输出上。 我选择的语言是C ++有几个原因,我不愿意争论。计算阶段将是极具象征意义的(想想编译器),并将使用pretty复杂的动态分配的数据结构。特别是,它不适合RAII风格的编程。 我想知道,如果它是可以接受的忘记释放内存,因为我希望整个计算功耗小于可用内存和操作系统是免费回收所有 ..
发布时间:2016-08-18 14:45:43 C/C++开发

在C指针INT矩阵 - 内存分配混乱

我在使用,而无需创建内存泄漏产生的int矩阵的一些问题。我希望能够使一个给定的(全球的)基质成任意大小动态地经由read_matrix()。但我希望能够稍后释放内存。所以在我的主要方法的第二个printf应导致总线错误,因为它不应该有分配给它的内存。我将如何去创造呢? INT ** first_matrix; INT ** second_matrix; INT ** result_matrix ..
发布时间:2016-08-18 14:38:49 C/C++

ç内存分配器及严格别名

甚至读了不少关于严格走样规则之后,我仍然感到困惑。据我理解这一点,就不可能实现遵循这些规则,一个健全的内存分配,因为的malloc不能重用释放的内存,由于内存可以用来在每个分配存储不同类型的。 显然,这不可能是正确的。我在想什么?如何实现该遵循严格走样分配器(或存储池)? 感谢。 编辑: 让我澄清一下我的问题有一个愚蠢的简单的例子: //小号== 0释放池 无效* my_custom_ ..
发布时间:2016-08-18 14:28:06 C/C++

全局和局部变量内存分配

我了解到,内存全局变量在程序启动时分配的,而每当函数调用局部变量的内存分配。 案例1:结果 我宣布用大小63500000和存储器的全局整型数组为256 MB结果 Ideone链接 包括<&stdio.h中GT; 诠释一个[63500000] 诠释的main() { 的printf(“这code需要大约250 MB内存\\ n”); 返回0; } 案例2:结果 我 ..
发布时间:2016-08-18 14:18:03 C/C++

到底为什么我不应该调用free()上不可由malloc分配的变量()?

我读的地方,这是灾难性的使用免费来摆脱不通过调用创建的对象的的malloc , 这是真的?为什么? 解决方案 这是不确定的行为 - 从来没有尝试 让我们看看会发生什么,当你尝试免费()自动变量。堆管理器将演绎如何利用内存块的所有权。要做到这一点,将不得不使用一些独立的结构,它列出了所有分配的块,而且是很慢的一个很少使用或希望必要的数据靠近块的开始。 后者经常使用,这是我应该如何工作。当 ..
发布时间:2016-08-18 14:17:46 C/C++

关于C / C ++堆栈分配

在学习C ++(和C)我有关于堆栈分配的工作,我不能找到解决某些特定的疑惑: 隐是否堆栈分配调用malloc / free函数?如果没有;它是如何保证有堆栈分配和堆分配之间没有冲突? 如果是的;并在C堆栈分配++调用隐含新/删除吗?如是;不超载新的运营商一类影响其堆栈分配? 这产生了混乱的结果在VC ++;但由于VC ++是不完全符合标准的(或让我听到),我决定我最好问这里... ..
发布时间:2016-08-18 14:12:00 C/C++开发

用C当前进程的内存使用情况

我需要在C当前进程的内存使用情况的人可以提供如何做到这一点Linux平台?在code样品 我知道了执行cat / proc /&LT的;你的PID> /状态获得内存使用的方法,但我不知道如何捕获,在C 顺便说一句,它是一个PHP扩展我修改(当然,我是C新手)。如果有PHP扩展API中提供了快捷方式,这将是更有益的。 解决方案 您永远可以在打开“文件”的/ proc 系统,你将一个 ..
发布时间:2016-08-18 14:09:20 服务器开发

我可以通过标准::字符串一个DLL,什么我可以做DLL's?

我相隔code片段成一个DLL,因为这将是经常updated.And应该更容易部署。 但我有什么,我能做什么,我不能用一个DLL做的问题。 我可以通过一个std:字符串到DLL,和一个CString? 我可以通过一个指向一个结构(以标准:: string的成员),并在DLL补吗? 一个dll可以返回一个指向分配有结构?这将是有效的?我以后能删除吗? 和应该怎样更好地传球,性病::字符串或 ..
发布时间:2016-08-18 14:06:46 C/C++开发

为什么MISRA C状态指针的副本可能会导致内存异常?

MISRA C 2012指令4.12就是“动态内存分配不应该使用。” 作为一个例子,该文件提供$ C $的c此示例: 的char * p =(字符*)malloc的(10); 字符* Q;自由(对); Q =磷; / *未定义行为 - P的值是不确定* / 和文件指出: 虽然存储在指针的值不变继 呼叫释放,这是可能的,在某些目标,该存储器 它指向的不再存在的和复制的行为该 ..
发布时间:2016-08-18 14:02:31 C/C++

C中的数组实例化 - 栈或堆分配?

我保证,这个问题已经被问过,但我一直无法通过搜索找到它;提前进行裁员的遗憾。 这是我的(可能是错误的)的理解是,你只分配到堆栈当你知道一个对象在编译时的大小。因此,在初始化数组的情况下,你可以做其中之一(这应该在栈上): 字符charArray [50]; 由于该数组的大小是在编译时已知,这应该没有问题。 在另一方面,这(我相信)也是有效的code:字符anotherCharArray [ ..
发布时间:2016-08-18 14:01:29 C/C++