Имеется код примера:
void function(int * array, int index)
{
    array[index] = 23;
}

int main(void)
{
    int array[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    function(array, 75);
    return 0;
}
Вопрос: как штатными средствами выявить выход за пределы массива в функции примера? (штатными: т.е., взял и поставил недостающий пакет в систему; компилятор, линкер, valgrind, ...)
Условие: изменить пример - не предлагать. Read more... )
dememax: (Hacker Emblem)
Что-то я пропустил "новость": у Си++ есть теперь свой Вики - http://cppreference.com/
Ну, не сразу, ну, уже давно, ну, ...
Короче, если интересна история сайта:
CppCon 2014: Nate Kohl "cppreference.com: documenting C++ one edit at a time" Read more... )
Думаю, многие из вас в курсе, что в NPTL механизм pthread_cancel() реализован с помощью исключений. Таким образом, следует избегать нейтрализации catch(...).

Знающие люди, а скажите, есть ли в мелко-мягкой среде какие-то подводные камни, из-за которых тоже следует избегать такой нейтрализации?

Заранее благодарен! :-)

Update: Обратные ссылки: alextutubalin: Об исключениях (C++)
Некий Jonathan Wakely определенно меня не любит.
А началось всё с моего письма в рассылке GCC (см. здесь предысторию возникновения этого письма), в котором я поинтересовался, а отчего же такая асимметрия:
  1. swap для пользовательских типов можно определять и в std, и в том же пространстве имён, откуда они;
  2. distance с advance - только в std, если вы хотите, чтобы их STL воспринимала (я привёл ситуацию с реализацией lower_bound).
Очень хорошо, что он пролил мне свет на общую тенденцию со swap.
Но его утверждение, что "нет необходимости специализировать distance, или почти нет, потому, что STL может предоставить оптимальные реализации для всех возможных категорий итераторов" - вызвало у меня недоумение.

Я не могу с этим согласиться Read more... )
На домашнем-то я уже неделю, как перешел на GCC 4.4.1, а вот на рабочем ноуте - только вчера.
Но не так всё гладко прошло. Сначала у меня стал падать Firefox при старте (уверен, что это было из-за nss или nspr) и загружать полностью одно ядро Skype.
Только потом я понял причину: дома в параметрах к компилятору у меня стоит -Os, а на рабочем -O3.
Пересобрал с -O2 - и вуаля, снова всё хорошо работает.
Правда, потребовалось более пропатченную версию буста размаскировать (1.35.0-r5, а был -r2).

Вывод: у GCC 4.4 с оптимизацией -O3 пока некоторые проблемы, что неудивительно; есть ещё вариант - проблемы у пакетов, но это уже отдельная история.

И ещё, новый компилятор стал ещё более строгим к неявным внесениям имён из смежных заголовков, нужно почти все системные заголовки указывать явно для соответствующих имён.

Update: Из-за Gentoo Bug 269307 пришлось перейти с glibc-2.9_p20081201-r2 на -2.10.1. (Юля! Тебе опять же волноваться не о чем, у нас дома это уже давно стоит.)

Upd2: emerge отрапортавал в логах:
1252243670:  ::: completed emerge (791 of 791) xfce-base/xfce4-meta-4.6.1 to /
1252243670:  *** Finished. Cleaning up...
1252243671:  *** exiting successfully.
1252243685:  *** terminating.

Profile

dememax

May 2023

S M T W T F S
 123456
78910111213
14151617181920
21 2223 24252627
28293031   

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 23rd, 2025 04:18 pm
Powered by Dreamwidth Studios