char *l;
...
l=(char*)GetMemory(SEND_SIZE);
Помогите плз, запихнуть указатель
Есть чаровый указатель на кусок памяти
Код:
Есть указатель на объект.
Нужно записать в массив l начиная с позиции 5 этот указатель. Т.е. записать сам адрес (4 байта).
И как потом это дело прочитать?
Значит указатель на объект напр.
CMyObj *obj;
...
...
*(int *)(l+5) = (int)obj;
Чтение
CMyObj *obj2 = (CMyObj *)*(int *)(l+5);
Цитата:
Originally posted by qw1
С пятой позиции не очень то хорошо. Нужно бы писать на границе двойного слова.
Значит указатель на объект напр.
CMyObj *obj;
...
...
*(int *)(l+5) = (int)obj;
Чтение
CMyObj *obj2 = (CMyObj *)*(int *)(l+5);
С пятой позиции не очень то хорошо. Нужно бы писать на границе двойного слова.
Значит указатель на объект напр.
CMyObj *obj;
...
...
*(int *)(l+5) = (int)obj;
Чтение
CMyObj *obj2 = (CMyObj *)*(int *)(l+5);
Спасибо, получилось. И позицию как надо сделал (все 1-байтовые переменные в конец переместил)
ЗЫ: Кстати заметил, что эта мега-конструкция ((CMyObj *)*(int *)) читается на тойже скорости, что и обычная переменная. Т.е. копирование этого значения в доп.переменную только снижает скорость кода, хотя и повышает его читабельность %). Вот такие пироги...
Код:
Определяется где-то
struct XB
{
CMyObj *obj1;
CMyObj *obj2;
byte b1;
byte b2;
byte b3;
char ch[20]
};
Есть например
l char[512];
CMyObj *objA, *objB;
byte a, b, c;
char c20[20];
Тогда запись
XB *xb = (XB *)l;
xb->obj1 = objA;
xb->obj2 = objB;
xb->a = a;
xb->b = b;
xb->c = c;
strcpy(xb->ch, c20);
Чтение
XB *xb = (XB *)l;
objA = xb->obj1;
objB = xb->obj2;
a = xb->a
...
struct XB
{
CMyObj *obj1;
CMyObj *obj2;
byte b1;
byte b2;
byte b3;
char ch[20]
};
Есть например
l char[512];
CMyObj *objA, *objB;
byte a, b, c;
char c20[20];
Тогда запись
XB *xb = (XB *)l;
xb->obj1 = objA;
xb->obj2 = objB;
xb->a = a;
xb->b = b;
xb->c = c;
strcpy(xb->ch, c20);
Чтение
XB *xb = (XB *)l;
objA = xb->obj1;
objB = xb->obj2;
a = xb->a
...
Я ща застрелюсь нафик! :D И че мне самому структуру прилепить не доперло?!!!
Хотя со структурой идет малость помедленней... Хотя самую малость, фиг с ним...
Спасибо qw1!