安全地使用显式地址分配

Sea*_*ick 0 c c++

在安全地使用指针地址的显式数字方面是否存在任何类型的最佳实践?我的意思是以下示例:

#define BASE_ADDRESS  0x10000

typedef struct my_var_list
{
   int var1;
   int var2;
} my_function_list;

my_var_list *MyVars;
MyVars = BASE_ADDRESS;    // Set the address of MyVars to be 0x10000
Run Code Online (Sandbox Code Playgroud)

这可能表明我的一些无知,但你怎么能保证0x10000当时没有被其他东西使用而你不会导致内存损坏?如果您不能假设,是否有任何安全的方法难以定义要使用的地址?

pm1*_*100 5

假设如果你知道它的0x10000那么你也知道什么时候是真的.通常这是硬件(我知道io端口5是0x10000)或低级OS内核(引导映像由内核的另一部分加载到0x10000).如果你不写这些东西,那么你不应该做硬编码地址