最純粹黎講 即係唔理啲類似type咩咩柒柒非必要而又trivial既構造 (yes pointer唔需要有type eg consider asm)
pointer is just a number that does not necessary support arithmetic. ie it is merely a handle, with implementation defined arithmetic
for POSIX, malloc return a pointer to a block, which does not need to be on heap (yes it can on stack, on global segment, on video memory, on disk, or on any fucking things as long as it support space)
https://pubs.opengroup.org/onlinepubs/007904975/functions/malloc.html
new “Creates and initializes objects with dynamic storage duration, that is, objects whose lifetime is not necessarily limited by the scope in which they were created.”
https://en.cppreference.com/w/cpp/language/new
And yes I can code an allocator that allocate on anywhere.