Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Проблема с памятью...
|
|||
|---|---|---|---|
|
#18+
Dima T, Опять не сказал(извиняюсь), что WINAPI мне использовать как раз можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2016, 15:37 |
|
||
|
Проблема с памятью...
|
|||
|---|---|---|---|
|
#18+
Dima TCreateThread() не инициализирует CRT. Не уверен что тебе нужна эта инициализация Нужна. Именно из-за её отсутствия он и получает проблемы. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2016, 15:46 |
|
||
|
Проблема с памятью...
|
|||
|---|---|---|---|
|
#18+
Dima T, "beginthread/_beginthreadex отличаются от CreateThread только тем, что инициализируют внутрипотоковые переменные состояния CRT." Не совсем понял что это за внутрипотоковые переменные состояния. Можно пример? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2016, 15:47 |
|
||
|
Проблема с памятью...
|
|||
|---|---|---|---|
|
#18+
kir86975Dima T, Опять не сказал(извиняюсь), что WINAPI мне использовать как раз можно. Рихтера почитай . Некоторые соображения по библиотеке С/С++... Чтобы многопоточные программы, использующие библиотеку С/С++, работали корректно, требуется создать специальную структуру данных и связать ее с каждым потоком, из которого вызываются библиотечные функции Более того, они должны знать, что, когда Вы к ним обращаетесь, нужно просматривать этот блок данных в вызывающем потоке чтобы не повредить данные в каком-нибудь другом потоке Так откуда же система знает, что при создании нового потока надо создать и этот блок данных3 Ответ очень прост не знает и знать не хочет Вся ответственность — исключительно на Вас Если Вы пользуетесь небезопасными в многопоточной среде функциями, то должны создавать потоки библиотечной функцией _beginhreadex, а не Windows-функцией CreateThread Может CreateThread() вовсе ни при чем. Замени и проверь. Если глюк исчез, значит помогло. ЗЫ Твоя прога без Stackwalker у меня скомпилировалась и работает уже полчаса. Твой TestQueue.exe вылетает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2016, 15:57 |
|
||
|
Проблема с памятью...
|
|||
|---|---|---|---|
|
#18+
Это сделал? Siemarglkir86975, для тестирования нужно побольше погонять, но главное - ты забыл указать, что компилировать с многопоточной CRT (/MT) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2016, 15:58 |
|
||
|
Проблема с памятью...
|
|||
|---|---|---|---|
|
#18+
Dima T, Сделал. Похоже тоже все работает отлично. Основное приложение отказалось компилиться, когда этот параметр выставил. (И как я вообще мог забыть про этот параметр... Сейчас смутно вспоминаю про него) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2016, 16:01 |
|
||
|
Проблема с памятью...
|
|||
|---|---|---|---|
|
#18+
ThreadsInteraction error LNK2019: unresolved external symbol __malloc_dbg referenced in function "void * __cdecl operator new(unsigned int,struct std::_DebugHeapTag_t const &,char *,int)" (??2@YAPAXIABU_DebugHeapTag_t@std@@PADH@Z) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2016, 16:04 |
|
||
|
Проблема с памятью...
|
|||
|---|---|---|---|
|
#18+
kir86975unresolved external symbol __malloc_dbg Почувствуй разницу между многопоточной CRT (/MT) и отладочной многопоточной CRT (/MTd). Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2016, 16:07 |
|
||
|
Проблема с памятью...
|
|||
|---|---|---|---|
|
#18+
kir86975Siemargl, Возможно проблема действительно в /MT. Сейчас проверю. Блин, слона-то он и не заметил... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2016, 16:13 |
|
||
|
Проблема с памятью...
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Почувствовал. Теперь и основное приложение работает без проблем. Только не понял тогда к чему режим /MT, раз без new и delete редко программу можно найти ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2016, 16:13 |
|
||
|
Проблема с памятью...
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Ну да примерно так. Каюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2016, 16:14 |
|
||
|
Проблема с памятью...
|
|||
|---|---|---|---|
|
#18+
kir86975Dima T, _beginthreadex это ж просто вроде как обертка? Или какие-то преимущества дает? Вообще-то она даёт те преимущества, что С/С++ программа, использующая CRT и потоки, без неё не работает . А с ней -- работает. Что естественно отражено в соотв. пунктах документации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2016, 16:14 |
|
||
|
Проблема с памятью...
|
|||
|---|---|---|---|
|
#18+
kir86975Dima T, CreateThread примерно ведь то же самое и делает, только поток сразу запускает на выполнение. Или просто в C++ вырвиглазно смотрится? Мне просто нужно использовать обязательно стандарт C++98. Но че-то я _beginthreadex в нем не нашел. Потому что её там и не должно быть, это -- функция, специфичная для Microsoft C/C++ runtime library. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2016, 16:16 |
|
||
|
Проблема с памятью...
|
|||
|---|---|---|---|
|
#18+
kir86975Dima T, "beginthread/_beginthreadex отличаются от CreateThread только тем, что инициализируют внутрипотоковые переменные состояния CRT." Не совсем понял что это за внутрипотоковые переменные состояния. Можно пример? http://www.cplusplus.com/reference/cstring/strtok/?kw=strtok ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2016, 16:17 |
|
||
|
Проблема с памятью...
|
|||
|---|---|---|---|
|
#18+
kir86975Только не понял тогда к чему режим /MT, раз без new и delete редко программу можно найти Редко можно найти человека, эксплуатирующего отладочную сборку программы. А её распространение вообще запрещено лицензией MS. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2016, 16:20 |
|
||
|
Проблема с памятью...
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Т.е. я правильно понял, что нужно /MTd использовать только для конфигурации Debug, а для Release использовать только /MT. Что я собственно сейчас проверил и заметил, что в конфигурации Release с /MT VS не ругается на unresolved symbols ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2016, 16:26 |
|
||
|
Проблема с памятью...
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Не понял что Вы имели ввиду, указав на функцию strtok ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2016, 16:32 |
|
||
|
Проблема с памятью...
|
|||
|---|---|---|---|
|
#18+
kir86975Dimitry Sibiryakov, Почувствовал. Теперь и основное приложение работает без проблем. Только не понял тогда к чему режим /MT, раз без new и delete редко программу можно найти Когда то давно, еще до мамонтов MSVS2005, были однопоточные приложения, которые с однопоточной CRT работали на пару процентов быстрее. Ты же выкопал где то более старую версию =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2016, 17:23 |
|
||
|
Проблема с памятью...
|
|||
|---|---|---|---|
|
#18+
kir86975MasterZiv, Не понял что Вы имели ввиду, указав на функцию strtok Прочитай описание этой функции -- поймёшь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2016, 17:25 |
|
||
|
Проблема с памятью...
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovkir86975Только не понял тогда к чему режим /MT, раз без new и delete редко программу можно найти Редко можно найти человека, эксплуатирующего отладочную сборку программы. Я, я этот человек, этот человек -- Я. Вы бы знали, сколько это боли... Dimitry SibiryakovА её распространение вообще запрещено лицензией MS. А вот это я не знал... Это ж здорово, позволяет очень просто всем доказать, что таки нужно собирать приложение в релизе... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2016, 17:27 |
|
||
|
Проблема с памятью...
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Как я понял, в многопоточном приложении может возникнуть проблема с определением следующего маркера при повторном вызове функции strtok. Которую может вызвать другой поток с другими параметрами. Т.е. позиция маркера будет являться разделяемым ресурсом. Верно? Т.е. _beginthreadex поможет этого избежать и будет использовать изолированные, так сказать, эти самые маркеры для каждого отдельного потока? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2016, 17:43 |
|
||
|
Проблема с памятью...
|
|||
|---|---|---|---|
|
#18+
kir86975MasterZiv, Как я понял, в многопоточном приложении может возникнуть проблема с определением следующего маркера при повторном вызове функции strtok. Которую может вызвать другой поток с другими параметрами. Т.е. позиция маркера будет являться разделяемым ресурсом. Верно? Т.е. _beginthreadex поможет этого избежать и будет использовать изолированные, так сказать, эти самые маркеры для каждого отдельного потока? Нет, всё не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2016, 00:50 |
|
||
|
Проблема с памятью...
|
|||
|---|---|---|---|
|
#18+
kir86975MasterZiv, Как я понял, в многопоточном приложении может возникнуть проблема с определением следующего маркера при повторном вызове функции strtok. Которую может вызвать другой поток с другими параметрами. Т.е. позиция маркера будет являться разделяемым ресурсом. Верно? Т.е. _beginthreadex поможет этого избежать и будет использовать изолированные, так сказать, эти самые маркеры для каждого отдельного потока? Библиотека CRT использует статические и глобальные переменные для своей работы. Эти глобальные переменные хранятся в общей для всех памяти приложения. Например, функция char* setlocale (int category, const char* locale); устанавливает значение локейла, которое будет в дальнейшем использоваться другими функциями. Чтобы использовать эти статические и глобальные переменные, они должны быть проинициализированы. Для этого приложение обязано каждый свой новый поток создавать только вызвая фукнцию _beginthreadex или в противном случае этом потоке не использовать функции CRT вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2016, 00:56 |
|
||
|
Проблема с памятью...
|
|||
|---|---|---|---|
|
#18+
MasterZivЯ, я этот человек, этот человек -- Я. Вы бы знали, сколько это боли... Прямо крик отчаяния... Не думал забить болт на кодинг. Податься в ПМ-ы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2016, 01:44 |
|
||
|
Проблема с памятью...
|
|||
|---|---|---|---|
|
#18+
maytonMasterZivЯ, я этот человек, этот человек -- Я. Вы бы знали, сколько это боли... Прямо крик отчаяния... Не думал забить болт на кодинг. Податься в ПМ-ы? Да это давно уже было, все уже позади, все преодолено героически... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2016, 08:24 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39164149&tid=2018617]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 264ms |
| total: | 430ms |

| 0 / 0 |
