|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [c++] Метод push_back класса vector библиотеки STL изменяем константную ссылку |
|
C/C++ - [c++] Метод push_back класса vector библиотеки STL изменяем константную ссылку
|
Новый участник Сообщения: 31 |
Профиль | Отправить PM | Цитировать Добрый день,
столкнулся с проблемой, происхождение которой решительно не могу понять. Исправить ситуацию вообщем-то несложно, но хотелось бы понять, как такое вообще произошло, потому что в моем понимании такое произойти не может вообще. Вот фрагмент кода: //метод пользовательского класа, //ссылка filename_ создается непосредственно перед вызовом метода, //никаким образом не привязана к экземпляру класса int MemoryManager::loadEmptyFile(const char* const filename_) { //смотрю дебагером значение filename_ - "с:\\testdir1\\serial.ind\0" //адрес filename_ - :0012F8D0 char* temp=(char*)malloc(100); strcpy(temp,filename_); temp=strlwr(temp); FileInfo newfi; //пустой конструктор //далее идет большой фрагмент кода, но после того как я его закомментировал, //ничего не изенилось, так что пишу без него /*Большой фрагмент кода*/ //в этом месте filename_ - "с:\\testdir1\\serial.ind\0" //адрес filename_ - :0012F8D0 //Из объявления класса MemoryManager: private: vector<FileInfo> files; files.push_back(newfi); //в этом месте filename_ - "\х13" //адрес filename_ - :0012F8D0 (тот же самый) return newfi.mmid; } Ещё что интерестно, метод push_back объявлен так: void push_back ( const T& x );. Т.е. и он вроде ничего вообще не должен менять кроме экземпляра самого вектора? Вообще это dll библиотека, и метод вызывается из функции этой dll библиотеки. Но для тестирования используется простенькая программка, поэтому такая ситуация что переменную изменяет другой поток исполнения вроде бы исключена. Кроме того, ошибка возникает каждый раз. В чем может быть проблема? |
|
Отправлено: 18:51, 17-04-2009 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать как выглядит struct FileInfo? соделжит ли он указатели на память? ведётся ли потом изменение памяти по этим указателям? (напомню, что при копировании указателей, память, на которые они ссылаются - не копируется, то есть работа идёт с тем же куском памяти)
|
Отправлено: 22:23, 19-04-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
C/C++ - STL Stack | delight | Программирование и базы данных | 1 | 10-12-2009 07:37 | |
C/C++ - STL | .::.DIMA.::. | Программирование и базы данных | 3 | 23-04-2009 08:07 | |
C/C++ - STL работа со стеком | alextrs | Программирование и базы данных | 2 | 28-04-2008 18:41 | |
heap @ c++ stl | pva | Программирование и базы данных | 10 | 12-04-2005 15:58 | |
STL и multimap | Crew | Программирование и базы данных | 5 | 28-11-2004 18:23 |
|