草庐IT

png_malloc

全部标签

c++ - malloc 分配的内存在什么时候获得类型?

Thisquestion询问malloc分配的对象的动态类型是什么,根据最上面的答案:Thereturnvalueofmallocisablockofuninitializedstorage.Noobjecthasbeenconstructedwithinthatstorage.Andthereforeithasnodynamictype.这带来了另一个问题:在什么时候说malloc返回的存储获得类型是有意义的。例如:void*p=malloc(sizeof(int));int*pi=(int*)p;我们可以说上面的pi指向一个动态类型int的对象,尽管它是未初始化的吗?

【C语言】动态内存管理(malloc,free,calloc,realloc,柔性数组)

文章目录为什么存在动态内存管理动态内存函数的介绍mallocfreecallocrealloc常见的动态内存错误对NULL指针的解引用操作对动态开辟空间的越界访问对非动态开辟内存使用free释放使用free释放一块动态开辟内存的一部分对同一块动态内存多次释放动态开辟内存忘记释放(内存泄漏)几个经典的笔试题题目1题目2题目3题目4C/C++程序的内存开辟柔性数组柔性数组的特点柔性数组的使用柔性数组的优势本章重点为什么存在动态内存管理动态内存函数的介绍mallocfreecallocrealloc常见的动态内存错误几个经典的笔试题柔性数组为什么存在动态内存管理我们已经掌握的内存开辟方式有:intv

c++ - 覆盖 malloc 的问题

我试图通过这样做来覆盖malloc。#definemalloc(X)my_malloc((X))void*my_malloc(size_tsize){void*p=malloc(size);printf("Allocated=%s,%s,%s,%x\n",__FILE__,__LINE__,__FUNCTION__,p);returnp;}但是,这是无限期地递归调用my_malloc(因为在my_malloc内部调用了malloc)。我想在my_malloc中调用Cmalloc函数而不是宏实现。你能告诉我怎么做吗?谢谢。 最佳答案

c++ - calloc 比 malloc 好吗?

我前几天刚刚了解了Ccalloc()函数。阅读了它的描述以及它与malloc(1、2)的不同之处后,我认为作为非嵌入式程序员,我应该始终使用calloc()。但事实真的如此吗?我有一个保留意见是访问calloc()内存的额外延迟,但我也想知道是否存在从malloc()切换到calloc()会以更严重的方式破坏程序。P.S.calloc()的零初始化方面对我来说非常清楚。我有兴趣了解的是calloc()和malloc()之间的另一个区别-calloc()提供的惰性内存分配.如果您只关注内存初始化方面,请不要发布答案。 最佳答案 这确实

c++ - 为什么 new/malloc 在 Win x64 上失败,尽管有足够的空闲 RAM?

我有一个强递归函数,它使用new(递归到malloc)为每个函数实例在本地创建一个(非常小的)std::multimap/calloc在标准库中)。尽管我在WindowsXPx64上使用native64位应用程序,但经过数百次递归后,新的失败了。机器有10GBRAM,应用程序只使用大约1GB。没有其他大型应用程序正在运行。这发生在启动程序并启动递归函数几分钟后。此时递归函数已被调用约150.000次,可能是最大值。数百个递归。出现的问题不是堆栈溢出。我正在使用VisualStudio2005和dinkumwareSTL。故障发生在发布版本中。编辑:好的,这是一些代码。我现在重新排列代码

c# - Windows/.NET 的 System.Drawing.Save(Stream, ImageFormat) 中的错误。生成损坏的 PNG

在某些非常特殊的情况下,System.Drawing.Save(Stream,Imageformat)会创建损坏的PNG图像。有没有办法避免它,例如:我不需要使用第三方库,并且我不需要检查PNG字节来知道我是否需要“修复”某些东西?重现步骤创建一个System.Drawing.BitMap向图像添加内容,使其生成非常具体的PNG文件大小(“何时发生”)调用Save(Stream,Imageformat)--选择PNG格式问题是什么?问题是最后一个图像数据后的IDATblock不正确。它不包含数据,但长度字节为0000fff4。可以用https://github.com/jsummers

c++ - libpng 在 png_write_into 上崩溃(Windows 10,VS2013,自建,所有测试通过 ok)

当调用png_write_info时,我观察到由于libpng(1.6.20)中的访问冲突导致的崩溃。我已经从源代码(包括zlib1.2.8)构建了libpng,并且libpng源代码附带的png测试全部通过,没有任何错误。我可以确认在这些测试期间正在创建良好的png文件。我的程序的简单分解(直到崩溃)如下所示。出于简单原因,我删除了所有错误和边界检查:intmain(intargc,char*argv[]){char*filename=argv[1];png_structppng=png_create_write_struct(PNG_LIBPNG_VER_STRING,NULL,N

windows - 在 Windows 上将 PNG 文件提交到 Git 破坏了 %PNG\r\n header

我在Windows上的Git存储库中添加了很多PNG文件,不幸的是设置texteol=lf不提交Windows换行符。问题是PNGheader必须采用%PNG\r\n格式,现在所有PNG图像都在Git中,header为%PNG\n不能那样显示。我尝试将这一行添加到.gitattributes:*.pngbinary但是文件虽然在工作目录中是正确的,但仍然显示为未更改并且gitadd什么都不做。我设法通过检查损坏的版本并手动编辑它来修复单个文件,但我希望有一种不那么乏味的方法。如何在不修改单个文件的情况下修复我的存储库? 最佳答案 我

c++ - 在许多 malloc/free 小块内存之后 malloc 大块内存失败

这是代码。首先我尝试malloc并释放一个大块内存,然后我malloc很多小块内存直到内存用完,然后我释放所有那些小块。之后,我尝试malloc一个大块内存。#include#includeintmain(intargc,char**argv){staticconstintK=1024;staticconstintM=1024*K;staticconstintG=1024*M;staticconstintBIG_MALLOC_SIZE=1*G;staticconstintSMALL_MALLOC_SIZE=3*K;staticconstintSMALL_MALLOC_TIMES=1*M

c++ - 在 free/malloc、外部内存 Hook 上花费了大量时间?

这部分与编程/调试相关,部分与外部操作系统相关(super用户候选人?),但我还是将其发布在这里,因为如果有人应该知道答案,它就在这里。我正在开发一个程序,突然,一个新的构建(没有重大变化)导致一切都停止了。我对它进行了剖析以查看花费的时间,但%分布是正常的-一切只是花费了更长的时间。使用VerySleepy研究调用堆栈时,我注意到free/malloc/delete/realloc占了95%以上的运行时间。怀疑堆损坏,我回滚了所有更改,但没有任何更改。使用MSVC的探查器,我深入挖掘了调用堆栈,超出了malloc/realloc并且令人惊讶地结束于一个名为Acxtrnal.dll的外