|
|
|
Глюк с удалением объекта
|
|||
|---|---|---|---|
|
#18+
Столкнулся с какой-то непонятной проблемой. Есть некоторый класс: class SNAutoDetectUpdate { public: SNAutoDetectUpdate(); virtual ~SNAutoDetectUpdate(); public: bool DetectNewUpdate(); /* public: int chekedTime; */ public: DWORD ThreadMethod(); public: void Start(); public: void Stop(); public: HANDLE stopEvent; public: HANDLE threadHandle; public: int tSR; public: __int64 liSR; public: //путь к каталогу программы char pathToIniFile[MAX_PATH]; public: char FilePath[MAX_PATH]; }; Есть диалог, где используется экземпляр этого класса. Попробовал использовать этот класс в другой программе (тоже диалог), но в ней еще используются библиотеки Lotus Notes API C++ 3.0. И сталкнулся с глюком или со своей ошибкой — если использовать класс в таком виде, то при удалении его (класса) экземпляра вылетает ошибка: Windows has triggered a breakpoint in COD.exe. This may be due to a corruption of the heap, and indicates a bug in COD.exe or any of the DLLs it has loaded. The output window may have more diagnostic information Если же расскомментировать объявление поля chekedTime, то все работает нормально. Целый день уже бьюсь над этой проблемой, но так и не смог найти ее решения. Такая же ситуация может быть и в том случае, когда перенести объявляние полей pathToIniFile и FilePath в начало описания класса. Какие есть мысли по этому поводу? Буду благодарен за любые идеи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2006, 17:43 |
|
||
|
Глюк с удалением объекта
|
|||
|---|---|---|---|
|
#18+
Привет. Такое осюсение что ты бъешь память, причем, если следовать твоему описанию где то вне кода данного класса. Вспоминаю похожий глюк описание Sun Solaris 8 компилятор gcc огронмый исходный файл насписанный на с. В этом файле вызываю два раза метод memcpy(.....) - результат core dump. Проверяю все нормально под переменные память выделяется и все такое. Пишу тестовый код в котором создаю две переменные выделяю под них память и вызываю в цикле 50 раз memcpy(....) результат см. выше. Еще раз повторяюсь исходный код огромен, начинаю этот тестовый код вставлять и проверять за полтора дня нашел утечку. Интересно проект позволит отключить библиотеку на которую ты грешишь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2006, 20:02 |
|
||
|
Глюк с удалением объекта
|
|||
|---|---|---|---|
|
#18+
Если же расскомментировать объявление поля chekedTime, то все работает нормально. Целый день уже бьюсь над этой проблемой, но так и не смог найти ее решения. Это случайность. Сделай так, чтобы ошибка была (все равно как) и лови ее. Отладчиком . Можешь пометить блок памяти от начала и конца этого объекта вверх и вниз на чуть чуть (точно - на размер заголовка блока дин. памяти, но чуть больше не страшно). И смотри, когда туда что-то запишется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2006, 23:59 |
|
||
|
Глюк с удалением объекта
|
|||
|---|---|---|---|
|
#18+
А как память-то выделяется ? Где объект создается ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 00:00 |
|
||
|
Глюк с удалением объекта
|
|||
|---|---|---|---|
|
#18+
road_runПривет. Такое осюсение что ты бъешь память, причем, если следовать твоему описанию где то вне кода данного класса. Вспоминаю похожий глюк описание Sun Solaris 8 компилятор gcc огронмый исходный файл насписанный на с. В этом файле вызываю два раза метод memcpy(.....) - результат core dump. Проверяю все нормально под переменные память выделяется и все такое. Пишу тестовый код в котором создаю две переменные выделяю под них память и вызываю в цикле 50 раз memcpy(....) результат см. выше. Еще раз повторяюсь исходный код огромен, начинаю этот тестовый код вставлять и проверять за полтора дня нашел утечку. Интересно проект позволит отключить библиотеку на которую ты грешишь? Да, позволяет. Если отключаю библиотеку Notes API, то все нормально работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 12:30 |
|
||
|
Глюк с удалением объекта
|
|||
|---|---|---|---|
|
#18+
AlexeyStaf Да, позволяет. Если отключаю библиотеку Notes API, то все нормально работает. То бишь есть большая вероятность что или там или в методах взаимодействующих с библиотекой. Попробуй поигратся с вызовами функций из этой бибилотеке, если это возможно. Я бы тест написал для этой библиотеке... и посмотрел бы что проихсодит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 13:59 |
|
||
|
Глюк с удалением объекта
|
|||
|---|---|---|---|
|
#18+
MasterZivА как память-то выделяется ? Где объект создается ? Объект пробовал и в стеке, и в куче создавать - все равно валится. Сейчас еще одну интересную вещь обнаружил - изменил статические массивы на динамические, но создаю их тако же длины (MAX_PATH). Тоже все нормально стало работать. Даже и не знаю что делать, может бросить это и оставить так, пока опять все не сломал :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 14:40 |
|
||
|
Глюк с удалением объекта
|
|||
|---|---|---|---|
|
#18+
road_run То бишь есть большая вероятность что или там или в методах взаимодействующих с библиотекой. Попробуй поигратся с вызовами функций из этой бибилотеке, если это возможно. Я бы тест написал для этой библиотеке... и посмотрел бы что проихсодит... Весь прикол в том, что я просто подключаю эту библиотеку (даже не вызываю ее функции). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 14:43 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33667439&tid=2031528]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
55ms |
get topic data: |
6ms |
get forum data: |
5ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 325ms |

| 0 / 0 |
