История изменений
Исправление
pavlick,
(текущая версия)
:
Инвалидация итераторов
Для libstdc++ есть замечательный дефайн -D_GLIBCXX_DEBUG, после этого начнешь отлавливать невалидные итераторы в отладочном режиме. Можешь проверить
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v = {1,2,3,4};
auto p = v.begin();
for (int i = 0; i < 500; ++ i)
v.push_back(5);
cout << *p << endl;
}
хотя плохо себе представляю как такой говнокод можно написать, но я опцию использую. Раздули из мухи слона и пиарите свой раст.
атомики даже при однопоточном использовании shared_ptr
Какие там проблемы?
data races
Я в растомногопоток не окунался сильно, понял лишь то что он запретил разделяемые, изменяемые данные настроив там какие-то механизмы (тут вопрос по стоимости еще надо прояснить).
Исходная версия
pavlick,
:
Инвалидация итераторов
Для libstdc++ есть замечательный дефайн -D_GLIBCXX_DEBUG, после этого начнешь отлавливать невалидные итераторы в отладочном режиме. Можешь проверить
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v = {1,2,3,4};
auto p = v.begin();
for (int i = 0; i < 500; ++ i)
v.push_back(5);
cout << *p << endl;
}
хотя плохо себе представляю как такой говнокод можно написать, но я опцию использую.
атомики даже при однопоточном использовании shared_ptr
Какие там проблемы?
data races
Я в растомногопоток не окунался сильно, понял лишь то что он запретил разделяемые, изменяемые данные настроив там какие-то механизмы (тут вопрос по стоимости еще надо прояснить).