AS>К сожалению, пока что весомых (на мой взгляд, конечно) аргументов там не приведено, единственное, что можно хоть как-то принять — сохранить итератор end после swap-a, что не требуется стандартом. Аргументация пока в целом сводится к "ну вот так было сделано в Dinkumware и я не вижу причин это менять... А, и еще end итераторы после swap".
аргументация у Лававея крайне слабая, но его можно понять. В стандарте есть unspecified behaviour. Написана куча говнокода, абьюзящего end после swap/move, и Лававею очень не хочется ломать всю эту "красоту", т.к. его поимеют в хвост и в гриву за подобные жертвы совместимостью с легаси в угоду оптимизации. Почему он просто не написал "backward compatability" я хз.
V>>>>>Такой подход позволит увеличить частоту выделений и освобождений памяти, а у VS оно иногда полезно для поиска утечек и расстрела памяти (гарды) через CRT или сторонними средствами. Но согласен, такое стоило по-умолчанию оставлять только в дебаге. AS>>>>Предлагаю переместить это в юмор. V>>>не понял юмора AS>>Вот и я. Поскольку это похоже на бородатый анекдот про девочку, которая пошла в лес и встретила волка. V>Я сам выделения/освобождения памяти вставлял в ассерты и таким образом локализовал место лика, а ты мне про какую-то девочку и волка рассказываешь.
Нужное выделено. Для поиска ликов есть специализированные средства. gflags, crt дебаг и прочее. Ими и надо пользоваться. На релизный код это все влять не должно.
А рассказываю это я к тому, что для решения проблем нужно пользоваться средствами, которые для этого предназначены, а не придумывать оправдания кривому поведению стандартной библиотеки. Если вы этого не понимаете — что ж, могу только посочувствовать...
AS>>К сожалению, пока что весомых (на мой взгляд, конечно) аргументов там не приведено, единственное, что можно хоть как-то принять — сохранить итератор end после swap-a, что не требуется стандартом. Аргументация пока в целом сводится к "ну вот так было сделано в Dinkumware и я не вижу причин это менять... А, и еще end итераторы после swap".
A>аргументация у Лававея крайне слабая, но его можно понять. В стандарте есть unspecified behaviour. Написана куча говнокода, абьюзящего end после swap/move, и Лававею очень не хочется ломать всю эту "красоту", т.к. его поимеют в хвост и в гриву за подобные жертвы совместимостью с легаси в угоду оптимизации. Почему он просто не написал "backward compatability" я хз.
Да, это можно было бы принять за аргумент (хотя и тоже слабый, т.к. кидание исключений из дефолтового конструктора вполне себе несовместимость с кучей кода, который такое поведение не ожидает — с хорошей вероятностью в любом большом продукте найти такие места, примеры приводились). И непонятно, почему нельзя регулировать такое поведение хотя бы макросом — с учетом того, что макросов, которые меняют аби, и так уже есть. Все были бы счастливы
AS>Стали смотреть на VC2015 и выяснилось, что новомодная реализация контейнеров (list, set/map, deq) — все в дефолтовом конструкторе аллоцируют по ноде на хипе.
На всякий случай. В коннекте нам ответили, что понимают суть проблемы, но менять поведение в ближайшее время не планируют. Для себя мы выводы сделали
Здравствуйте, Andrew S, Вы писали:
V>>Я сам выделения/освобождения памяти вставлял в ассерты и таким образом локализовал место лика, а ты мне про какую-то девочку и волка рассказываешь. AS>Нужное выделено. Для поиска ликов есть специализированные средства. gflags, crt дебаг и прочее.
crt debug и был использован
AS>А рассказываю это я к тому, что для решения проблем нужно пользоваться средствами, которые для этого предназначены, а не придумывать оправдания кривому поведению стандартной библиотеки. Если вы этого не понимаете — что ж, могу только посочувствовать...
иногда "нужные средства" просто неработают, поэтому приходится сооружать свои из г-на и палок
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
V>>>Я сам выделения/освобождения памяти вставлял в ассерты и таким образом локализовал место лика, а ты мне про какую-то девочку и волка рассказываешь. AS>>Нужное выделено. Для поиска ликов есть специализированные средства. gflags, crt дебаг и прочее. V>crt debug и был использован
AS>>А рассказываю это я к тому, что для решения проблем нужно пользоваться средствами, которые для этого предназначены, а не придумывать оправдания кривому поведению стандартной библиотеки. Если вы этого не понимаете — что ж, могу только посочувствовать... V>иногда "нужные средства" просто неработают, поэтому приходится сооружать свои из г-на и палок
Кто ж запрщает — делайте свои. Специализированные. Применяйте по необходимости. Но при чем тут stl и всем?