如何在choc的内存中存储4个字节的整数值,该块被malloced作为char类型

Adi*_*Adi 3 c type-conversion

我已经分配了一大块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个字节,这是问题所在.

我不知道如何解决这个问题..

Tho*_*mas 5

你需要将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,只是假装暂时,好吗?"