我试图写以下内容:
#include <stdint.h>
#include <stdlib.h>
void *ptr = malloc(SIZE_MAX);
但是编译器给了我以下警告:
warning: argument 1 value ‘18446744073709551615’ exceeds maximum object
size 9223372036854775807 [-Walloc-size-larger-than=]
这听起来很合理。但无论如何,我想在当前实现/架构上分配一个最大可能大小的对象。RSIZE_MAX
中定义了宏Annex.B(19)
:
__STDC_WANT_LIB_EXT1__
RSIZE_MAX
所以我尝试了以下示例:
#define __STDC_WANT_LIB_EXT1__
#include <stdint.h>
#include <stdlib.h>
int main(){
void *ptr = malloc(RSIZE_MAX);
}
但是没有效果,RSIZE_MAX
没有定义。如何在编译时使用此宏或任何其他方式来验证最大对象大小?