Процессоры были 64-битными в течение некоторого времени.Я озадачен тем, почему люди боятся перейти на 64-битную операционную систему.32-разрядная ОС не может адресовать гораздо больше, чем 3 ГБ ОЗУ, поэтому это достаточно веская причина для обновления в моей книге!
Когда вы пишете код, я столкнулся с самой большой разницейfor это размер указателя!
В 32-разрядной скомпилированной программе указатель обычно составляет 4 байта.В 64-битной скомпилированной программе указатель обычно составляет 8 байт.
Почему это важно?
Допустим, ваша программа использует сокеты для передачи структуры данных из одного процесса в другой.Возможно, серверный процесс является 32-разрядным, а клиентский - 64-разрядным.
Хотя структура может быть одинаково определена как в 32-, так и в 64-разрядных программах, 64-разрядный исполняемый файл зарезервирует 8 байтов на указатель (и структурыобычно содержат указатели на другие структуры, как в связанных списках и т. д.).
Это может привести к смещению данных, когда 32-битный exe передает структуру в 64-битный exe.
In (почти?) во всех случаях передача значений указателей между процессами в любом случае не имеет смысла, например, их данные не имеют значения и могут быть опущены.
Таким образом, вы можете подумать, что передача значений указателей была бы необычной практикой - но простой способ передать структуру - это записать ее содержимое через сокет, указатели и все!
ЭтоНаиболее существенная ошибка, которую я обнаружил, при кодировании 64-битных клиентов, когда наше серверное программное обеспечение 32-битное.