In C++ when i do new (or even malloc) is there any guarantee that the return address will be greater than a certain value? Because… in this project i find it -very- useful to use 0-1k as a enum. But i wouldn’t want to do that if its possible to get a value that low. My only target systems are 32 or 64bit CPUs with the OS window/linux and mac.
Does the standard say anything about pointers? Does windows or linux say anything about their C runtime and what the lowest memory address (for ram) is?
-edit- i end up modifying my new overload to check if the address is above >1k. I call std::terminate if it doesn’t.
There’s no such guarantee. You can try using placement
newif you need very specific memory locations but it has certain problems that you’ll have to work hard to avoid. Why don’t you try using a map with an integer key that has the pointer as its value instead? That way you wouldn’t have to rely on specific memory addresses and ranges.