C堆环境变量

u5rb5r59  于 2022-12-03  发布在  其他
关注(0)|答案(1)|浏览(167)

C语言中是否有一个环境变量来存储堆的字长,或者至少有一个变量来存储系统的类型?例如,在64位系统中是8(字节),在32位系统中是4(字节)

ql3eal8s

ql3eal8s1#

请注意,64位系统可以执行32位二进制文件,在这种情况下,sizeof(void *),sizeof(int),...将为4,即使在64位系统上。
您可以使用uname系统调用(参见uname -m)获得一些额外的里程。对于Intel,它将是x86_64(64),或i686(32)。如果您需要一个仅适用于Intel的解决方案,这可以工作。您可以将其扩展到其他处理器(arm等),但您需要对您的代码可能运行的每个平台进行编码。请参见“machine”:https://man7.org/linux/man-pages/man2/uname.2.html
更复杂的是,您可能运行在32位操作系统下,而该操作系统运行在64位处理器(或某些虚拟化环境)下。在这些情况下,uname将报告操作系统,而不是处理器。不清楚您要查找的是哪一个。

相关问题