这是一个学校的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的这种内部行为。 否则,行为是不确定的。