在C语言中分配内存时,
char * undecoded_query_array = (char*) malloc(100);
我收到以下错误:
警告:zwallocatvirtualmemory失败c0000018堆006D0000(基数006D2000,大小0002F000)
有人能理解为什么会这样吗?这很奇怪,因为,我注意到这个问题,当我改变命令行参数到我的程序…当我把它改回原来的参数时,程序又工作了??
我还发现,如果我将分配的数量从100更改为10000,程序又可以正常工作了。
不确定这些发现是否相关,或者它们是否与手头的问题有关。
谢谢。
更改命令行参数会产生影响的事实说明了这一点。我的猜测是,您以某种方式破坏了传递给malloc
的100
。提供一个最小的、完整的代码示例来演示这个问题如何?或者您可以尝试通过int
变量传递大小,以确认请求的数量正确。