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
保证您至少能得到您要求的金额,除非分配失败。然而,出于显而易见的原因,你应该永远不要指望它