这是学校的C作业,但我遇到了一些奇怪的事情,我不知道它是否正常。是Malloc分配更多的内存,然后需要?
我必须采取命令行参数和一个的一个例子是
-ia.b
所以我的节目内我动态地分配与malloc
char *fileName = NULL;
fileName = malloc(strlen(argv[i]) * sizeof(char));
//error testing etc
strcpy(fileName, argv[i]);
存储器工作正常,但我通过visual studio调试器查看内存,这是分配在内存位置,这对我来说是更多的空间需要:
0x01608b98 "ÍÍÍÍÍýýýýB`\x1˜?`\x1\xf1¼O{º"
,如果我投的malloc如这样fileName = (char*)malloc(strlen(argv[i]) * sizeof(char));
我得到这个分配的内存:
0x009d8d38 "ÍÍÍÍÍýýýýB"
考虑到我的说法是5个字节,是的malloc分配更多的内存,那么它应该还是我只是做错了吗?
这是完全可能的,它会分配多一点比你所要求的。但我不清楚你如何确定分配的数量。 –
是的,malloc实现通常分配的内存超过您请求的内存使用量。 – d3L
很可能。但是这不会保护你免受分配的内存不足所造成的短缺,因为'strlen(argv [i])'应该是'(strlen(argv [i])+ 1)'以允许字符串后续的'strcpy'的终止符。 –