The_God 13:49 10.05.2008
Сообщение от xxx-men :
int* px= &myObject.x;
не опасно
struct test
{
int a;
int b;
};
test A;
int* pa= &A.a; << здесь всё ок
int* pb = pa + 1; <<<<<< тут может быть засада в случае если появятся выравнивание например по 8 байт, или добавятся виртуальные методы, или еще чтонь хитрое
[Ответ]
xxx-men 06:49 11.05.2008
Сообщение от The_God :
или еще чтонь хитрое
а если размер поля указываешь в битах, засположение тоже на усмотрение компилятора?
[Ответ]
The_God 12:13 11.05.2008
Сообщение от xxx-men :
а если размер поля указываешь в битах, засположение тоже на усмотрение компилятора?
не юзал, не знаю
прочитай соответствующую главу стандарта с++
[Ответ]
The_God 16:00 22.05.2008
вот полезный наверное ключ компиляции
/d1reportSingleClassLayoutXXX
где вместо XXX подставляется имя структуры или класса.
Он выводит расположение полей в структуре в виде смещений в байтах.
работает в vs2005, в других не проверял
[Ответ]
xxx-men 11:49 27.05.2008
Сообщение от The_God :
/d1 reportSingleClassLayoutXXX
а имеет значение куда это добавлять(с/с++,linker,manifest и т.д...)?, я просто не пробывал
вопрос такой:
int* a;
a=new int[1000];
delete [] a;//
откуда оно знает сколько удалять?
[Ответ]
The_God 19:49 27.05.2008
добавлять в строку компиляции надо.
Сообщение от xxx-men :
откуда оно знает сколько удалять?
отсюда он знает:
Сообщение от xxx-men :
a=new int[1000];
компилятор склерозом не страдает и знает еще много всякого
[Ответ]
xxx-men 20:51 27.05.2008
Сообщение от The_God :
добавлять в строку компиляции надо.
ладно......, можно в картинках?
Сообщение от :
#include "набор_аццких_функций.h"
int main()
{
int* a = new int[1000];
int* b;
рапечатать_на_притере_адрес(a);
MessageBox(0,"ку","выньте из притера распечатаный лист, вложие его в сканер, и нажмите ок", 0);
HBMP hbmp = сканировать_картинко();
b=перегнать_картинко_в_адрес(hbmp);
delete[] b;
return 0;
};
здесь все корректно?
Сообщение от The_God :
компилятор склерозом не страдает
допустим в этом примере копмпилятор, даже без скрероза, пролетает....
int n;
cin>>n;
int* a[n];
delete[] a;
[Ответ]
Pengvin 21:39 27.05.2008
Сообщение от xxx-men :
допустим в этом примере копмпилятор, даже без скрероза, пролетает....
int n;
cin>>n;
int* a[n];
delete[] a;
в темные века за такое жгли на кострах. А что мешает вот так сделать?
int i;
cin>>i;
int * a;
a = (int*)malloc(i*sizeof(int));
free(a);
[Ответ]
Ivan XXX 22:09 27.05.2008
int n = 1;
cun >> n;
int * a = new int [ n ];
delete [ ] a;
или так?
[Ответ]
xxx-men 23:33 27.05.2008
Сообщение от Pengvin :
в темные века за такое жгли на кострах.
извиняюсь, реально пьянствую сёдня, хотел написать так:
int n;
cin>>n;
int* a = new int[n];
delete[] a;
вопрос "как оно это знает?" актуален
[Ответ]
xxx-men 23:35 27.05.2008
Сообщение от Pengvin :
А что мешает вот так сделать?
a = (int*)malloc(i*sizeof(int));
........ну это уже путь истинных джедаев
[Ответ]
Pengvin 23:50 27.05.2008
путь истинных джедаев это
xor ebx,ebx
push PAGE_READWRITE
push MEM_RESERVE
push MEMSIZE
push ebx
call VirtualAlloc
push MEM_RELEASE
push ebx
push eax
call VirtualFree
[Ответ]
The_God 14:03 28.05.2008
Сообщение от xxx-men :
вопрос "как оно это знает?" актуален
компилятор для языка С++ обязан эту инфу гдето сохранять согласно стандарту языка С++. а где именно зависит от компилятора
посмотри сорцы компилятора
[Ответ]
xxx-men 15:58 28.05.2008
Сообщение от The_God :
посмотри сорцы компилятора
короче я понял, то что я это не знаю, это "нормально"
[Ответ]