Re[2]: Запись указателя в переменную
От: MikelSV http://www.centerix.ru
Дата: 24.09.07 20:03
Оценка:
Здравствуйте, SAV, Вы писали:

SAV>Здравствуйте, MikelSV, Вы писали:


MSV>>Есть такая вещь: memcpy(edata, &ndata, 4); запись указателя на ndata в переменную edata.

MSV>>Проблема в том, что я не могу сделать это без memcpy, а так хочется. Оказывается нет у меня опыта в этом моменте.

MSV>>Помнится очень давно я так выпендривался через какую-то свою функцию. Компилятор много ругался, но работал нормально.


MSV>>Хочется узнать самый простой способ


SAV>
SAV>void mycpy(void* p, void* data, int len){
SAV>    for(int i = 0; i < len; i++) ((char*)p)[i] = ((char*)data)[i];
SAV>}
SAV>



Люди, вы чего творите?

char *edata, *ndata;

Так работает:
memcpy(edata, &ndata, 4);

edata — буффер, ndata — новый буффер, адрес которого нужно вписать в edata (в первые 4 байта).


Вроде сделал:
*(unsigned int*)edata=*(unsigned int*)(char*)&ndata;
Просто я не мог просчитать это в памяти (своей головы). Обычный код таких проблем не вызывает.

>Если человек не смог воспользоваться стандартной функцией memcpy,

>то и твоим велосипедом он тоже не сможет воспользоваться.
Прошу не гнать.

А то что это велосипед это точно. Я хоть и большой любитель велосипедов, но я все-таки умудрился написать свою memcpy на ассемблере. Учись оптимизировать.

Я не хотел использовать memcpy, потому что она тормозила работу программы. Т.е. можно было обойтись одной строчкой c++ кода, без запуска функций.
Я, как большой любитель матриц (массивов по русски), пытался заставить новую матрицу( по логике более быструю) работать быстрее предыдущей. memcpy портила все дело. Щас новая матрица смогла вырваться вперед. И съэкономить 10% времени при заполнении данными. Мну счастлив.
Римское правило. Тот, кто говорит, что Это не может быть сделано, никогда не должен мешать тому, кто Это делает.
Осень, ну вы поняли.
Зачем еще один код? А человек?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.