是Malloc分配更多的内存,然后需要?

这是一个学校的C作业,但我遇到了一些奇怪的东西,我不知道这是否正常。

我必须采取命令行的论点,一个例子是

-ia.b

所以在我的程序中,我dynamic地分配malloc

 char *fileName = NULL; fileName = malloc(strlen(argv[i]) * sizeof(char)); //error testing etc strcpy(fileName, argv[i]); 

工作正常,但我通过visual studiodebugging器来查看内存,这是什么成为分配在内存位置,这是我需要更多的空间:

 0x01608b98 "ÍÍÍÍÍýýýýB`\x1˜?`\x1\xf1¼O{º" 

如果我施放malloc如这样fileName = (char*)malloc(strlen(argv[i]) * sizeof(char)); 我得到这个分配在内存中:

 0x009d8d38 "ÍÍÍÍÍýýýýB" 

考虑到我的论点是5字节,是malloc分配更多的内存,那么它应该还是我只是这样做不正确?

通常,malloc以大小等于16个字节(即malloc分配具有基本对齐要求的区块)的块大小来分配内存。 但是,您不应该依赖malloc的这种内部行为。 否则,行为是不确定的。