ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
27 апреля
1056889 Топик полностью
йцyкeн (30.11.2020 23:33, просмотров: 180) ответил fk0 на new -- это вызов operator new(sizeof(T)) и последующий вызов Т(...) delete -- вызов ~T() и вызов operator delete(). Для массивов ещё добавляется пробежка по всем элементам массива и вызов T() или ~T() для каждого. Обычно функции operator new() и operator delete() -- этот тот же malloc() и free()... Так что в менеджменте памяти ничего нового. Конечно нельзя вектор без мьютекса использовать параллельно в разных потоках. Впрочем это касается любого класса вообще. Любой
Я не про использование одного и того же вектора, а про ситуацию, когда функция в одном потоке имеет локальную переменную типа vector<double>, а функция в другом потоке - другую переменную, и не обязательно vector, пусть это будет map<string, int>. Я думаю, что new и delete потоков работают с одним пулом памяти, и это требует синхронизации, и она в "настоящих" операционках есть, а с RTOS для микроконтроллеров я дела не имел.