malloc
的语法是 malloc(num*sizeof(data_type))
我想知道为什么你需要指定尺寸。您只需指定一个“足够大”的数字,一切都会正常运行。
最佳答案
语法为malloc(size)
。例如,您将其编写为 malloc(10*sizeof(int))
的唯一原因是因为您很少对确切的字节数感兴趣,而是对元素的数量感兴趣。这也使其便于携带且更容易更换。
如果您知道 int
的大小为 4 个字节(可能因系统而异),那么编写 malloc(40)
而不是 是完全有效的>malloc(10*sizeof(int))
但是,如果您为不同的系统重新编译,或者稍后决定需要 long
而不是 int<,这可能会导致错误
.
并且您需要指定尺寸。当您调用 malloc(20)
时,您将获得一个指向 20 字节内存块的指针。如果您后来意识到这还不够,您可以使用realloc
来更改大小。但您确实需要指定一个大小,否则操作系统将根本不知道要给您多少内存。另外,如果malloc
失败,它会给你一个NULL
指针。失败的原因之一是您请求的内存超过当前可用的内存。
您可以请求比您需要的更多的内存。但原因是什么呢?结果将是您的程序将需要更多内存。这可不是什么好事。
旁注:
您可能会获得比您请求的更多的内存。 malloc
保证您至少获得您要求的数量,除非分配失败。但是,出于显而易见的原因,您应该永远不要指望它。
关于c - 既然malloc可以分配内存,为什么还需要内存块呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47103999/