Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2012, 15:49   #11
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

Цитата:
вряд -ли. Приведенный мной вариант рабочий - проверил у себя.
Я на VS 2010 пишу. может в ней дело. Хотя тоже вряд ли. Просто когда я писал свой код сам в стиле преобразования Си, то он мне выдавал число похожее на -89023451. Не знаю в чем беда, скорей всего в собственной кривости, но спасибо всем за помощь.
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Старый 05.03.2012, 15:17   #12
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
почему нельзя, и как надо?
из-за выравнивания структур. это конечно будет работать в большинстве случаев, но так или иначе, это плохой код) некросплатформенный на одной и той же машине, на одном и том же компиле, но с разными настройками выравнивания) хотя лабу сдать конечно сойдет

почленно нужно записывать/считывать
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 06.03.2012, 19:18   #13
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
почему нельзя, и как надо?
Потому что механика языка такова, что боевые объекты классов, чуть реже чем всегда используют адресную арифметику.

При последующей загрузке, такие объекты будут содержать мусор, и крэшить приложение по недействительным указателям.

Сохранять нужно выборочно-почленно: смысловое значение памяти, но не её "состояние".
_Bers вне форума Ответить с цитированием
Старый 06.03.2012, 19:22   #14
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
При последующей загрузке, такие объекты будут содержать мусор, и крэшить приложение по недействительным указателям.
где в этой структуре хоть один указательный тип?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.03.2012, 19:28   #15
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
где в этой структуре хоть один указательный тип?
Автор привел её исключительно для примера. Речь не о конкретной структуре в сферическом вакууме. А о грамотном use case, и потенциальных проблемах.
_Bers вне форума Ответить с цитированием
Старый 06.03.2012, 19:35   #16
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

тогда надо уточнять ТС, ибо я привел код для данной структуры.
про более сложные я сам отлично знаю.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.03.2012, 20:34   #17
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Как-то в сторону ушли. Почему-то говорите о сериализации класса.
Код:
	struct X
	{
		char c;
		int i;
	};
Вот структура, назовите ее длину.
sizeof(X) == sizeof(char) + sizeof(int) ?
Если явным образом не задать выравнивание,
Код:
#pragma pack(push,1)
    struct X
	{
		char c;
		int i;
	};
#pragma pack(pop)
то поведение при чтении/записи такой структуры в массив/файл будет неопределено. Точнее будет определено опцией компилятора /Zp[num], если таковая вообще есть (как и нужная прагма).
EUGY вне форума Ответить с цитированием
Старый 06.03.2012, 20:51   #18
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

внутри одной программы выравнивание не важно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.03.2012, 20:56   #19
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Да. И поэтому
Цитата:
Сообщение от pproger Посмотреть сообщение
из-за выравнивания структур. это конечно будет работать в большинстве случаев, но так или иначе, это плохой код) некросплатформенный на одной и той же машине, на одном и том же компиле, но с разными настройками выравнивания) хотя лабу сдать конечно сойдет ...
EUGY вне форума Ответить с цитированием
Старый 06.03.2012, 20:59   #20
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

не, не, не.
я не утверждаю что код хороший, но он рабочий, не более.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение и запись структуры в бинарный файл. jack291 Помощь студентам 2 20.08.2011 18:07
запись в бинарный файл Shepard90 Общие вопросы C/C++ 2 28.06.2011 08:59
с++ запись в бинарный файл ofstream::write Farrel Общие вопросы C/C++ 1 25.11.2010 00:19
Считывание и запись структур в бинарный файл TheKnyazz Общие вопросы C/C++ 7 10.11.2009 13:47
запись классов в бинарный файл Feannewedd Общие вопросы C/C++ 6 29.06.2009 10:11