我正在用 C++ 开发我的爱好项目,并且想要测试不同类型变量的连续内存分配(例如具有不同类型变量的数组)。如何检查特定内存地址是否可供使用?
更多细节:
假设我们有以下代码:我们有一个整数int_var(该变量位于哪个内存地址中并不重要),为了在 i 的地址之后的地址中分配不同类型的变量,int_var需要检查该地址是否可用,然后使用它。我尝试了以下代码:
int int_var = 5;
float* flt_ptr = (float*)(&int_var + (sizeof(int_var) / sizeof(int)));
// check if flt_ptr is successfully allocated
if (flt_ptr) { // successfully allocated
// use that address
} else { // not successfully allocated
cout << "ERROR";
}
Run Code Online (Sandbox Code Playgroud)
问题是:当我运行程序时,有时flt_ptr会成功分配并且没问题,有时则不会 - 但是当未成功分配时,它会抛出一个异常,显示“读取访问冲突...”而不是打印"ERROR"。这是为什么?也许我错过了一些关于检查是否flt_ptr成功分配的事情?还是做错了什么?flt_ptr如果是这样,在使用之前如何检查是否已成功分配?
谢谢!!