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