繁体   English   中英

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

[英]is Malloc allocating more memory then needed?

这是学校的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如so fileName = (char*)malloc(strlen(argv[i]) * sizeof(char)); 我在内存中分配了这个:

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

考虑到我的参数是5个字节,malloc是否应该分配更多的内存呢?或者我只是错误地做了这个?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM