Большое количество ошибок при миграции на 64-битные системы связано с изменением соотношения между размером указателя и размером обычных целых. В среде с моделью данных ILP32 обычные целые и указатели имеют одинаковый размер.
Иногда в программах необходимо (или просто удобно) представлять элементы массива в виде элементов другого типа.
Примечание. Мы специально выбрали номер "тринадцать" для этого урока, поскольку ошибки, связанные с адресной арифметикой в 64-битных системах, являются наиболее коварными. Надеемся, число 13 заставит вас быть внимательнее.адресной арифметикой
Бывают ошибки, в которых, в общем-то, никто не виноват, но они от этого не перестают быть ошибками. Представьте, что давным-давно (в Visual Studio 6.0) был разработан проект, в котором присутствует класс CSampleApp, являющийся наследником от CWinApp.
Легко сделать ошибку в коде, работающем с отдельными битами. Рассматриваемый паттерн 64-битных ошибок связан с операциями сдвига.
Классическими примерами, приводимыми во многих статьях по проблемам переноса программ на 64-битные системы, является некорректное использование функций printf, scanf и их разновидностей.
Анонсирован релиз MongoDB 1.6, ориентированной на хранение документов высокопроизводительной и высокомасштабируемой СУБД, занимающую нишу между быстрыми и масштабируемыми системами, оперирующими данными в формате ключ/значение, и реляционными СУБД, функциональными и удобными в формировании запросов. Код MongoDB написан на языке C++ и распространяется в рамках лицензии AGPLv3.

Как известно, многие С-библиотеки используют обратные вызовы для обеспечения какого-либо функционала. Так поступает, например, библиотека expat для реализации SAX модели. Обратный вызов или callback используется для возможности выполнить пользовательский код на стороне библиотеки. Пока такой код не несет побочных эффектов — все нормально, но как только на арене появляется С++, все, как всегда, становится нетривиальным.
В некачественном коде часто встречаются магические числовые константы, наличие которых опасно само по себе. При миграции кода на 64-битную платформу эти константы могут сделать код неработоспособным, если участвуют в операциях вычисления адреса, размера объектов или в битовых операциях.
Статический анализ кода - методология выявления ошибок в программном коде, основанная на просмотре программистом участков кода, помеченных статическим анализатором. Помеченные участки кода с большой вероятностью содержат ошибки определенного типа.
Существуют различные подходы к выявлению ошибок в программном коде. Рассмотрим основные методологии и их эффективность в выявлении 64-битных ошибок.
На конференции OSCON Роб Пайк заявил, что промышленные языки программирования, в частности С++ и Java, слишком сложны и не соответствуют современным вычислительным стандартам.
Статья предназначена для людей желающих работать с СУБД Oracle используя С++. Я не ставил своей целью написать полное руководство, для этого существуют соответствующая документация - которую нет смысле переписывать. Для максимально быстрого понимания изложение ведется в примерах, начиная с вопросов сборки программы (пример под Linux). Статься написана применительно к Oracle 9.2. Код тестировался на Oracle 9.2.0.4, SUSE Linux 9.3.
Как узнать mac-адреса сетевых карт ? В рунете упорно кочует только способ на базе netbios. Его недостаток - он применим только для интерфейсов, на которых этот самый протокол NetBios задействован, что как раз не есть гуд. Сама по себе идея оставлять NetBios на интерфейсе, смотрящем в нет - идея плохая. Поэтому способ определения mac посредством netbios нельзя считать универсальным.
Исправление всех ошибок компиляции и предупреждений не будет означать работоспособность 64-битного приложения. И именно описанию и диагностике 64-битных ошибок будет посвящена основная часть уроков. Также не надейтесь на помощь ключа /Wp64, который многими часто без оснований преподносится при обсуждениях в форумах как чудесное средство поиска 64-битных ошибок.
Последние комментарии