malloc
的语法是malloc(num*sizeof(data_type))
我想知道为什么你需要指定一个大小。你可以指定一个足够大的""数字和一切都会正常运行。
答案 0 :(得分:4)
语法为malloc(size)
。您将其编写为malloc(10*sizeof(int))
的唯一原因是因为您很少对确切的字节数感兴趣,而是对元素的数量感兴趣。这也使它便于携带,更容易更改。
如果你知道int
的大小是4个字节(可能因系统而异),写malloc(40)
而不是malloc(10*sizeof(int))
是完全有效的,但这可能会导致错误您为其他系统重新编译,或稍后决定您需要long
而不是int
。
您需要指定尺寸。当你调用malloc(20)
时,你会得到一个指向一块20字节的内存块的指针。如果您后来意识到这还不够,可以使用realloc
来更改大小。但是你需要指定一个大小,否则操作系统根本不会知道要给你多少内存。此外,如果malloc
失败,它会给你一个NULL
指针。失败的一个原因是你要求的内存比现有的更多。
你可以要求比你需要更多的记忆。但是原因是什么?结果将是您的程序将需要更多内存。这不是一件好事。
旁注:
您可能获得的内存超出了您的要求。 malloc
保证您至少您要求的金额,除非分配失败。但是,你应该 - 出于显而易见的原因 - 永远不要指望它。