#include<stdio.h> #include <stdlib.h> int main() { char *a = malloc(sizeof(int) * 18); printf("%d",sizeof(a)); }
在32位系统上,的大小是多少?我在64位系统上试过了,a是8。在32位系统上也会一样吗?
guicsvcw1#
“32位”是指CPU在一条指令中可以执行的最大数据量,这实际上与同一CPU的地址总线完全没有关系,所以“32位CPU上的地址有多大”这个问题是无法回答的。例如,市场上大多数8位CPU都有16位地址总线,许多8/16位CPU甚至支持24位或更大的地址总线。虽然市场上绝大多数32位CPU都有32位地址总线,但这并不能保证,除非你有一个特定的CPU。
1条答案
按热度按时间guicsvcw1#
“32位”是指CPU在一条指令中可以执行的最大数据量,这实际上与同一CPU的地址总线完全没有关系,所以“32位CPU上的地址有多大”这个问题是无法回答的。
例如,市场上大多数8位CPU都有16位地址总线,许多8/16位CPU甚至支持24位或更大的地址总线。
虽然市场上绝大多数32位CPU都有32位地址总线,但这并不能保证,除非你有一个特定的CPU。