Большой Воронежский Форум
Страница 3 из 3
< 123
» Программирование>контроль типов С++
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:
посмотри сорцы компилятора

короче я понял, то что я это не знаю, это "нормально" [Ответ]
Страница 3 из 3
< 123
Вверх