Кажется, у меня возникли проблемы со следующей функцией:
void OtherClass::copy_this( int index, MyClass &class_obj)
{
if(index < MAX_index)
class_obj = array_of_MyClass[index];
}
OtherClass поддерживает массив объектов MyClass, и я хотел бы, чтобы эта функция копировала выбранный объект из массива в предоставленный class_obj.
При запуске программа имеет ошибку сегментации, когда достигает этой функции.Запуск его в gdb и просмотр обратной трассировки показывает, что когда он попадает в строку назначения, выполнение переходит назад почти на 100 строк в середину совершенно другой функции.Строка, к которой он переходит, выглядит следующим образом:
temp_obj = array_of_MyClass[other_index]
И соответствующий вывод обратной трассировки GDB:
#0 0x0000003c7ae7256c in memcpy () from /lib64/tls/libc.so.6
#1 0x000000000043264e in MyClass::operator= (this=0x4c0000004c, _ctor_arg=@0x7fbffd8228) at ../location.cpp:156
#2 0x0000000000432569 in OtherClass::copy_this (this=0x7fbffd8220, index=0, section=@0x4c0000004c) at ../location.cpp:254
Очевидно, что это тот же тип операции, но почему выполнение будет перенесенокак это?У меня нет длинных прыжков, gotos и т. Д. Где-либо в программе.У меня также нет пользовательских операторов присваивания, конструкторов копирования и т. Д., Поэтому «operator =» из обратной трассировки вызывает недоумение.
Прежде чем кто-либо спросит, нет, я не могу опубликовать весь код.(Извините!) Я понимаю, что это может сделать невозможным определить мою проблему;если это так, просто дайте мне знать.
Заранее спасибо!
После повторного прохождения и тестирования пары «простейших» случаев, кажется, что проблема фактически возникла где-то на более раннем этапе выполнения, поэтому я вернулся к чертежной доске для меня.Спасибо всем за помощь!