Size: a a a

Android NDK (C++) — русскоговорящее сообщество

2019 December 15

M

Max in Android NDK (C++) — русскоговорящее сообщество
Всем привет. Вопрос не по NDK, а по C++. У меня что-то странное происходит с переменной. Она изменяется в зависимости он вызова других функций. Из-за этого у меня происходит выход за границы массива.
Код на картинке. Ситуация такая. Функция LoadFile возвращает буфер с прочитанным файлом и записывает в переменную BufferSize его размер. Но потом почему-то эта переменная меняется сама собой. Если в коде оставить функцию printf в зелёной рамке, то переменная изменяется (Вывод 1), а если убрать - значение остаётся прежним (Вывод 2). Размер файла равен 2608 байт. Из-за чего такое может происходить?
источник

M

Max in Android NDK (C++) — русскоговорящее сообщество
источник

o

oles in Android NDK (C++) — русскоговорящее сообщество
Max
Всем привет. Вопрос не по NDK, а по C++. У меня что-то странное происходит с переменной. Она изменяется в зависимости он вызова других функций. Из-за этого у меня происходит выход за границы массива.
Код на картинке. Ситуация такая. Функция LoadFile возвращает буфер с прочитанным файлом и записывает в переменную BufferSize его размер. Но потом почему-то эта переменная меняется сама собой. Если в коде оставить функцию printf в зелёной рамке, то переменная изменяется (Вывод 1), а если убрать - значение остаётся прежним (Вывод 2). Размер файла равен 2608 байт. Из-за чего такое может происходить?
а если что что в рамке заменить на printf("%s\n", "callbacksTrue"); ?
источник

o

oles in Android NDK (C++) — русскоговорящее сообщество
это при условии код однопоточный
источник

M

Max in Android NDK (C++) — русскоговорящее сообщество
Число другое. Но теперь она при любом выводе другое
источник

M

Max in Android NDK (C++) — русскоговорящее сообщество
268551140
источник

o

oles in Android NDK (C++) — русскоговорящее сообщество
Код однопоточный?
источник

o

oles in Android NDK (C++) — русскоговорящее сообщество
Это вообще что, винда?
источник

M

Max in Android NDK (C++) — русскоговорящее сообщество
Вроде бы да. Код виндовый, но его можно скомпилировать и под другие платформы. Вот видео с отладкой. Я там убираю комментарий - и значение меняется.
yadi.sk/i/MJ1FmIkDHowwLw
источник

o

oles in Android NDK (C++) — русскоговорящее сообщество
Max
Вроде бы да. Код виндовый, но его можно скомпилировать и под другие платформы. Вот видео с отладкой. Я там убираю комментарий - и значение меняется.
yadi.sk/i/MJ1FmIkDHowwLw
впринципе ошибки компилятора тоже никто не исключал, такое лучше по дизасму дебажить
источник

o

oles in Android NDK (C++) — русскоговорящее сообщество
там наверняка все видно
источник

o

oles in Android NDK (C++) — русскоговорящее сообщество
возможно выранивание стека идет криво и у офсета на переменную башню срывает
источник

o

oles in Android NDK (C++) — русскоговорящее сообщество
и собирать без оптимизации
источник

M

Max in Android NDK (C++) — русскоговорящее сообщество
Именно эту проблему можно решить созданием другой переменной и присвоением ей значения. Но теперь программа стала вылетать в другом месте. В общем странно это всё. В коде ошибки быть не должно, т.к. я брал исходники из репозитория. Ещё при компиляции dll нужные функции не попадали в export, пришлось их прописывать в def файле.
источник

o

oles in Android NDK (C++) — русскоговорящее сообщество
Max
Именно эту проблему можно решить созданием другой переменной и присвоением ей значения. Но теперь программа стала вылетать в другом месте. В общем странно это всё. В коде ошибки быть не должно, т.к. я брал исходники из репозитория. Ещё при компиляции dll нужные функции не попадали в export, пришлось их прописывать в def файле.
Она еще и сегфолтится?
источник

M

Max in Android NDK (C++) — русскоговорящее сообщество
Угу. Из-за этой ошибки.
источник

o

oles in Android NDK (C++) — русскоговорящее сообщество
Max
Угу. Из-за этой ошибки.
похоже на корапченый стек, нужно дебажить по дизасму
источник
2019 December 16

M

Max in Android NDK (C++) — русскоговорящее сообщество
Такие ошибки по всему коду, видимо, происходят. Вот другой маленький видосик. Я не менял исходный код. Переменная len резко меняет значение.
yadi.sk/i/-aB4eX7629rkJA
источник

o

oles in Android NDK (C++) — русскоговорящее сообщество
Max
Такие ошибки по всему коду, видимо, происходят. Вот другой маленький видосик. Я не менял исходный код. Переменная len резко меняет значение.
yadi.sk/i/-aB4eX7629rkJA
а собирается чем и с какими ключами?
источник

o

oles in Android NDK (C++) — русскоговорящее сообщество
я так понял это еще и либа
источник