У меня есть две кучи, первая основная, указатели из нее никогда не указывают на элементы из второй кучи. Вторая куча для построения всяких структур которые указывают на элементы первой кучи, или на элементы из второй кучи.
Для второй кучи я собрался написать GC, но как я могу отделить элементы первой кучи, от элементов второй кучи?
Решение которое не работает в стандартом С:
bool in_heap(char *heap, ssize_t heap_size, char *p)
{
return p >= heap && p < heap + heap_size;
}
А по стандарту как? Готов перейти на дескрипторы вместо указателей, но это не должно тормозить.
Очень много элементов с размером 12 байт, добавление лишнего поля серьезно увеличит потребление памяти за счет большого количества элементов.