Próbuję zrozumieć 64-bitowych kompilacji, więc zrobiłem mały test w C++ Builder:Jakie zalety mają większe wskaźniki w systemach 64-bitowych?
int i = 12345;
ShowMessage(i);
int *pi = &i;
ShowMessage(sizeof(pi));
Largeint li = 9223372036854775807;
ShowMessage(li);
Largeint *pli = &li;
ShowMessage(sizeof(pli));
Kiedy skompilować ten program jako 64 bit, wielkości wskaźnika wzrasta do 8 bajtów (64 bity).
Jaka jest przewaga zwiększonego rozmiaru wskaźnika?
Wskaźnik '4'-bajtowy może adresować tylko ~ 4 GB pamięci. To może szybko zabraknąć w nowoczesnym programie. – BoBTFish
Wielkość wskaźnika zwykle odzwierciedla tylko podstawowy system. Jeśli korzystasz z systemu 32-bitowego, otrzymujesz wskaźniki 32-bitowe, a w systemie 64-bitowym otrzymujesz wskaźniki 64-bitowe. Naprawdę nie ma sensu mieć nic innego. –
Poza tym, że wiele systemów 64-bitowych ma 32-bitowe podsystemy. Oznacza to limit 4 GB na proces 32-bitowy, ale całkowita pamięć systemowa może być znacznie większa. – MSalters