[英]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.