LINUX.ORG.RU

История изменений

Исправление 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

Я в растомногопоток не окунался сильно, понял лишь то что он запретил разделяемые, изменяемые данные настроив там какие-то механизмы (тут вопрос по стоимости еще надо прояснить).