C ++ пул памяти с массивом символов

У меня просто быстрый вопрос относительно того, как массив символов работает в отношении пула памяти и выделения для него указателей других типов переменных. Я работаю над назначением, которое использует массив символов для пула памяти, и мне нужно иметь возможность выделять для него указатели, и я прочитал некоторую информацию по этому вопросу, но не совсем понимаю одну часть, которая заключается в том, как работает фактическое распределение такие как:

const int poolSize = 60000;
char pool[poolSize];

void* allocate(int aSize)
{

//.....

return ((void*) 0);
}

long* pointer;
pointer = (long *) allocate(sizeof(long));
*pointer = 0xDEEDEEEF;

Я просто не совсем понимаю, как это работает, так как char равен 1 байту, а long должен быть 4, и так как же работает что-то подобное, когда мне нужно выделить 4 места в массиве для одной переменной указателя long? Также не стесняйтесь приводить примеры и объяснения, но, пожалуйста, не отказывайтесь от того, как должна работать вся программа, так как я хотел бы понять это сам, как только пойму, как именно работает эта часть. Спасибо

0

Решение

Распределение памяти не зависит от типа, т.е. является ли оно длинным / char.etc. Но дело в том, что оно количественно определяется в «байтах». И char — единственный тип данных, который занимает одну байтовую память.

Это в вашей программе, как вы относитесь к выделенной памяти. Для бывших

char s[4]={0,0,0,'A'};
int *p = (int*)s; //treating those 4 bytes as int
printf("%d",*p); //will print 65

Я предлагаю вам посмотреть первые 4-5 лекций по парадигме программирования Стэн-Форда. Распределение памяти объясняется невероятно хорошо в этих лекциях. Вы также можете обратиться к Главе 8 языка программирования Си — от Дени Ритчи

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]