我已经分配了一大块char类型的内存,大小就是10 MB(即mem_size = 10):
int mem_size = 10;
char *start_ptr;
if((start_ptr= malloc(mem_size*1024*1024*sizeof(char)))==NULL) {return -1;}
Run Code Online (Sandbox Code Playgroud)
现在我想将大小信息存储在内存块的标题中.为了让自己更清楚,让我们说:start_ptr = 0xaf868004(这是我从执行中得到的值,它每次都会改变).
现在我想把大小信息放在这个指针的开头,即 *start_ptr = mem_size*1024*1024;
.
但是我无法将这些信息放入start_ptr
.我认为原因是因为我的ptr类型char
只需要一个字节,但我试图存储int
哪个需要4个字节,这是问题所在.
我不知道如何解决这个问题..
你需要将char
指针强制转换为int
指针.分两步:
int *start_ptr_int = (int*)start_ptr;
*start_ptr_int = mem_size * 1024 * 1024;
Run Code Online (Sandbox Code Playgroud)
一步到位:
*((int*)start_ptr) = mem_size * 1024 * 1024;
Run Code Online (Sandbox Code Playgroud)
将(int*)
您的指针名字前告诉编译器:"是的,我知道这是不是其实是一个指针int
,只是假装暂时,好吗?"