【发布时间】:2011-01-31 16:28:56
【问题描述】:
我分配了一块 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;}
现在我想将大小信息存储在内存块的头中。为了让自己更清楚,假设:start_ptr = 0xaf868004(这是我从执行中得到的值,它每次都会改变)。
现在我想把大小信息放在这个指针的开头,即*start_ptr = mem_size*1024*1024;。
但我无法将此信息放入start_ptr。我认为原因是因为我的 ptr 是 char 类型,它只占用一个字节,但我试图存储占用 4 个字节的 int,这是问题所在。
我不知道如何解决这个问题..
【问题讨论】:
-
请添加实际失败的代码。
-
char *start_ptr; int toCopy = mem_size*1024*1024; if((start_ptr= malloc(mem_size*1024*1024*sizeof(char)))==NULL) {return -1;} //memcpy(start_ptr,&toCopy,4); //*((int *)start_ptr) = mem_size*1024*1024; //*start_ptr = 'A'; printf("存储在 %p 的值是 %d \n", start_ptr, *start_ptr);我从这个站点了解了几种方法,一种是 memcpy,第二种是类型转换。但我想从 printf 语句中打印出所需的值。它总是给我0
-
您需要在 printf 中为 %d 转换 start_ptr:*(int)start_ptr.
标签: c type-conversion