草庐IT

malloced

全部标签

更有效的是:char a [10];或char *a;a = malloc(10);

我注意到在功能中这将无效:chara[10];sprintf(a,"test");returna;但这有效:char*a;a=malloc(10);sprintf(a,"test");returna;问题:如果我不必”返回a;"..使用更好吗?chara[10];“?如果是这样。为什么?看答案malloc是标准库中的函数调用。根据当前的编译器的当前堆碎片和堆组织,这可能是一个昂贵的操作(即使单独进入图书馆的呼叫也可能比堆栈分配消耗更多的CPU周期)。chara[10]是堆栈框架的增量(而不是当前堆栈指针中的10个简单减法)。堆栈分配在大多数非爆发体系结构上的最终速度更快。

C++的new / delete 与 C语言的malloc/realloc/calloc / free 的讲解

         在C语言中我们通常会使用malloc/realloc/calloc来动态开辟的空间,malloc是只会开辟你提供的空间大小,并不会初始化内容;calloc不但会开辟空间,还会初始化;realloc是专门来扩容的,当你第一次开辟的空间不够用的时候,就要使用realloc;如果你第一次使用realloc的时候,前面没有开辟过空间,那么realloc的行为会跟malloc一样,之后再发挥realloc自己的行为。而我们的C++是面向对象的编程,当开辟空间失败了malloc只会返回一个空指针,我们还需要自己来判断。所以在C++这里就将malloc升级成为了new,new在开辟空间失败

c++ - C++ 中的 Malloc 函数

我正在从C过渡到C++。在C++中,malloc函数有什么用吗?或者我可以只用“new”关键字声明它吗?例如:classNode{...}...Node*node1=malloc(sizeof(Node));//mallocNode*node2=newNode;//new我应该使用哪个? 最佳答案 使用new.您不需要使用malloc在C++程序中,除非它与某些C代码交互,或者您有某种理由以特殊方式管理内存。你的例子node=malloc(sizeof(Node))是个坏主意,因为Node的构造函数(如果存在)将不会被调用,随后的d

c++ - malloc_info() 是如何工作的?

我一直在努力弄清楚位于malloc.h中的malloc_info()函数是如何工作的。我知道您必须向它传递一个FILE*并且还没有实现任何选项,但我不知道它实际报告了什么!?此外,我编写了一个分配一大堆内存的测试应用程序,并且从malloc_info()报告的值不会改变,除非我进行了20,000次1字节分配?有没有人对malloc_info()有任何经验并且可以阐明它应该测量内存的哪些方面?应该注意的是,我在谷歌上几乎找不到任何关于malloc_info()的信息,只有一些粗略的错误报告。malloc_info()的示例输出:编辑:作为进一步的解释;我的后备位置是mallinfo()函

c++ - 'malloc' 和 'new' 是如何工作的?它们有何不同(实现方面)?

这个问题在这里已经有了答案:Whatisthedifferencebetweennew/deleteandmalloc/free?(15个答案)关闭去年。我知道它们在语法上有何不同,C++使用new,而C使用malloc。但是,在高层次的解释中,它们是如何工作的?参见Whatisthedifferencebetweennew/deleteandmalloc/free?

c++ - 使用 malloc 安全吗?

有人告诉我使用malloc进行分配不再安全,我不是C/C++高手,但我已经使用malloc和C/C++做了一些东西。有谁知道我面临的风险是什么?引用他的话:[..]ButindeedtheweakpointofC/C++itisthesecurity,andtheAchilles'heelisindeedmallocandtheabuseofpointers.C/C++itisawellknowninsecurelanguage.[..]TherewouldbefewappsinwhatIwouldnotrecommendtocontinueprogrammingwithC++."

c++ - 在启用 OpenCL 选项的情况下使用 Tesseract 时出现 malloc 错误

我在启用OpenCL选项的情况下编译了Tesseract3.04.00。在尝试使用GetUTF8Text()从图像中提取文本时,出现malloc错误,我想是内存泄漏。我找到了之前添加的针对内存泄漏错误的补丁,但是,我编译的版本已经添加了补丁。我不确定为什么会发生内存泄漏。这是我得到的输出:[DS]Profilereadfromfile(tesseract_opencl_profile_devices.dat).[DS]Device[1]1:Intel(R)Core(TM)i5-4250UCPU@1.30GHzscoreis14049349632.000000[DS]Device[2]1

c++ - 在 Visual C++ 中全局覆盖 malloc

我正在尝试找出一种在VisualC++(2005)中全局覆盖malloc和相关函数的方法。我的设置是一个带有静态链接运行时库的dll,它由我自己的c++代码、外部c++和c代码组成。我想要完成的是允许dll的用户设置他们自己的内存分配函数的实现。我无法使用的解决方案:全局覆盖new和delete,我的代码库中有很多外部C库,这意味着这不会捕获很多分配。#将malloc定义为不同的符号。这将迫使我将此定义推送到所有使用的外部库的build设置中,我真的想避免这种情况。我不关心的事情:如果任何外部库正在以其他方式分配内存(HeapAlloc、内存映射文件或它们提出的任何其他方式),我承认无

c++ -::operator new(size_t) 是否使用 malloc()?

::operatornew(size_t)是在内部调用malloc(),还是直接使用系统调用/操作系统特定的库调用?C++标准怎么说?在thisanswer它说:malloc()isguaranteedtoreturnanaddressalignedforanystandardtype.::operatornew(n)isonlyguaranteedtoreturnanaddressalignedforanystandardtypenolargerthann,andifTisn'tacharactertypethennewT[n]isonlyrequiredtoreturnanaddr

c++ - 我想制作自己的 Malloc

我想制作自己的malloc/free,这样我就可以制作一个精确的复制分配器。有哪位大师有什么提示和建议吗?我现在有几个问题:我是否应该只malloc大块内存,然后从中分配内存,这样我就不必调用系统调用?抄袭收藏家通常是如何完成的?我想这部分要有效地完成有点复杂。我天真的实现只是malloc剩余对象大小的block,这将需要2倍的空间。 最佳答案 有很多关于实现malloc和类似事物的优秀文献。但我注意到您在此处包含了C++——您是否知道可以使用C++编写您自己的new和delete实现?这可能有助于轻松完成此操作。无论如何,您想要的