Zer*_*One -7 c linux data-segment
我们假设这段代码:
int i,j=0;
char* block = (char*) (0x9000);
char table[4]= {0x01,0x02,0x03,0x04};
for (i=0; i< 45567; i++) {
*(block +i)= table[j];
j++;
if (j==4)
j=0;
}
Run Code Online (Sandbox Code Playgroud)
我想问一下:
block
在堆栈中还是在堆中分配的内存?free(block)
在此代码的末尾使用吗?Kon*_*lph 11
你实际上并没有在堆栈上和堆上分配任何内存.您只是将变量指向一个地址,然后假装那里的内存属于您.
这在C或C++中都不合法,通常不起作用.而"不工作"在这里真的意味着什么.并且由于代码是非法的,指针是否可以是free
d的问题没有实际意义.
(在非常特定的设置中,如果编译器和硬件支持它,则用于写入特定的硬件地址.但这不是这种情况.)