Блок памяти может быть выделен статически, в стеке или в куче. Я хочу знать, как определить, указывает ли указатель на кучу. Я работаю с Windows и Linux, и это не проблема, разные решения для каждой ОС. Я использую GCC и Mingw.
Если бы я мог знать, где начинается куча и где она заканчивается, думаю, проблему можно решить. Я думаю, что могу определить дно и вершину стека, чтобы узнать, находится ли блок в стеке, но если есть несколько потоков, то есть несколько стеков. Даже если бы я знал, где находится статическая память, я думаю, что у меня будут проблемы с блоками статической памяти общих библиотек.
Я думаю, у меня будет проблема, если указатель не указывает на начало блока:
type* x = &(pointer[3]);