Неверная передача параметра в метод [закрыт]

102
17 января 2021, 01:50
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.

Закрыт 1 год назад.

Улучшить вопрос

Заметил, что у меня неправильно передается один из параметров функции:

class M_Init
{
    //...
    jmp_stub* SetClosure(void * from, void* to);
    //...
}

Реализация:

jmp_stub *M_Init::SetClosure(void *from, void *to)
{
    jmp_stub stub = new jmp_stub();
    stub->arg = (size_t)to;                          /// size_t
    //...
}

Я вызываю этот метод так:

this->SetClosure((void*)PrWrkr, (void*)&_Initialize);  

где _Initialize - это функция:

void* __stdcall _Initialize(LPVOID arg, LPVOID func) {/**/}

Например, ее адрес в отладчике до передачи 0x0f2715c0, а после - уже 0x0f26182a. Приложил на всякие случай скрины:

При чем первый параметр передается верно. Я отметил красным, как меняется передаваемый параметр (на первом скрине немного смазанный, но в окне интерпретации все четко видно). Переключаюсь через стэк вызовов внутрь метода - а там уже другое значение. Как такое может быть?

Answer 1

Проблема решена. Скорее всего, это был глюк отладчика vs2017. Ее корень, по моим наблюдениям, был в том, что отладка происходила из под проекта dll, который вызывался exe-приложением. В проекте самого exe, который вызывал эту библиотеку при последовательном трассировании, отладчик все показывал правильно. Но если просто расставить брейкпойнты без последовательных шагов с заходом, происходит тоже нечто описанное в шапке.

Скомпилированное приложение работало верно.

Большое спасибо всем кто заминусовал. Видимо, это специалисты высокого класса, которые сталкивались с подобной проблемой и заведомо знали ее решение, но пояснений от которых я был недостоен

READ ALSO
Наследование/геттеры [закрыт]

Наследование/геттеры [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

148
Не работает glut библиотека

Не работает glut библиотека

Пытаюсь запустить glut, раньше пытался эту библиотеку в виндовс "положить" но не сработало

98
Как грамотно построить класс-рендерер? [закрыт]

Как грамотно построить класс-рендерер? [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме

89
Как можно вернуть из JNI vector<vector<float>>?

Как можно вернуть из JNI vector<vector<float>>?

У меня есть вот такая C++ имплементация

86