gpt4 book ai didi

c - Malloc 是否分配了比需要的更多的内存?

转载 作者:可可西里 更新时间:2023-11-01 11:24:41 25 4
gpt4 key购买 nike

这是学校的 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 是否分配了比它应该分配的更多的内存,还是我只是做错了?

最佳答案

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

关于c - Malloc 是否分配了比需要的更多的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42283281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com