Каковы последствия использования/Zi по сравнению с/Z7 для Visual Studio проекты C++?

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

36
задан Akhil Jain 21 January 2013 в 16:19
поделиться

2 ответа

Codeview является форматом отладки значительно старше, который был начат со старого автономного отладчика Microsoft назад в "дни" Компилятора Microsoft C середины 1980-х. Это занимает больше места на диске, и у отладчика занимает больше времени проанализировать, и это - сильная боль для обработки во время соединения. Мы генерировали его из нашего компилятора назад, когда я работал над CodeWarrior для Windows в 1998-2000.

одно преимущество состоит в том, что Codeview является зарегистрированным форматом, и другие инструменты могут часто обрабатывать его, когда они не могли иметь дело с базами данных отладки PDB-формата. Кроме того, при создании нескольких файлов за один раз нет никакой конкуренции для записи в базу данных отладки для проекта. Однако для большей части использования эти дни, с помощью формата PDB большая победа, и во время изготовления и особенно во время запуска отладчика.

8
ответ дан Ben Combee 27 November 2019 в 06:18
поделиться

Одно преимущество старого формата C7 состоит в том, что это едино, сохранено в EXE вместо отдельного PDB и EXE. Это означает, что у Вас никогда не может быть несоответствия. VS dev инструменты удостоверится, что PDB соответствует своему EXE, прежде чем это будет использовать его, но определенно более просто иметь единственный EXE со всем, в чем Вы нуждаетесь.

Это добавляет новые проблемы необходимости быть в состоянии разделить информацию об отладке, когда Вы выпускаете, и гигантский EXE-файл, не говоря уже о древнем формате и отсутствии поддержки других современных функций как minrebuild, но может все еще быть полезно, когда Вы пытаетесь сохранить вещи максимально простыми. Один файл легче, чем два.

Не то, чтобы я когда-либо использую формат C7, я просто помещаю это там как возможное преимущество, так как Вы спрашиваете.

Кстати, это - то, как GCC делает вещи на паре платформ, которые я использую. Формат DWARF2 прокладывается под землей в выходном ELF. Люди Unix думают, что они так веселы.:)

BTW формат PDB может быть проанализирован с помощью DIA SDK.

7
ответ дан scobi 27 November 2019 в 06:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: