Re[8]: Запись указателя в переменную
От: djs_ Россия  
Дата: 24.09.07 23:24
Оценка:
Здравствуйте, MikelSV, Вы писали:

MSV>Хм, странно, но у меня все работает.

MSV>Не понимаю. Если вы про размеры типов данны, то об этом я знаю и учитываю в разработке.

MSV>Если предлагаете сделать так: *(char *)edata=*(char *)&ndata; То нужного эффекта не получается, так как копируется только один символ.


А сколько нужно копировать?

_>>Кроме того, вы используете указатель для хранения адреса на нужный вам указатель (масло маслянное).

_>>Может в этом и есть тайный смысл, но почему бы в edata не хранить именно &ndata? Тогда edata = (char *)&ndata;

MSV>Пардон, но нафига мне адрес на ndata? ndata — простой указатель на новый блок данных.


Не знаю нафига...
Но вы писали буквально:

Есть такая вещь: memcpy(edata, &ndata, 4); запись указателя на ndata в переменную edata.
Проблема в том, что я не могу сделать это без memcpy, а так хочется.


MSV>Структура матрицы: [unsigned int size][char *nextdata][ char[x] data ]

MSV>Здесь я решил сделать без использования структур. Да, код писать сложнее, но более интересно.

Ничем не сложнее. Просто в общем случае код будет медленнее, ну и памяти поменьше будет использовать иногда.
А чтобы было еще интереснее и эффективнее (в отношении использования памяти) используйте не т.н. "линейный односвязный список", а xor-связный список.

MSV>Фокус прост: char *data, *edata, *ndata; — указатели на начало, конец и для прочих нужд.

MSV>все данные пишутся в блок данных(3) матрицы. Когда место заканчивается выделяю еще буффер, а в предыдущий блок пишу указатель на созданный.

Это что-то вы вообще уникальное придумали. Как назвали? Паровозик?

MSV>Для определенных задач это самая эффективная матрица. Думаю на этой матрице закончится мой многолетний труд над ними. Это самая мощная матрица из всех (ранее созданных).





MSV>>>Вопрос решен

MSV>Но люди еще лезут

Хотите, чтобы игнорировали и не замечали вашего присутствия?
--
Спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.