Malloc是否需要分配更多内存?

时间:2017-02-16 19:47:56

标签: c windows visual-studio pointers memory-management

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

我必须接受命令行参数,其中一个例子是

  

-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是否应该分配更多内存呢?或者我只是错误地执行此操作?

1 个答案:

答案 0 :(得分:3)

通常malloc以块的形式分配内存,可以被段大小等于16字节整除(即malloc分配具有基本对齐要求的块)。但是,您不应该依赖malloc的这种内部行为。否则行为未定义。