3.如果一个
int类型指针=malloc( 100sizeof(int类型说明符) )
这时候还能写1024
为什么写成纯数字形式 10241024 不用写明白这1mb要存什么类型?
原因是不能传递类型吗??不能传递类型的话,我们要强制类型转换吧,如p=(void)malloc(10010241024);
第八行中的1024后面的*可以理解为把1024当作数字进行运算,结果就是1024 * 100。
当指针地址改变后,正确的free()写法是free(改变前的指针地址)。例如:
c
Copy code
int *p = malloc(100 * sizeof(int));
int *p2 = p;
p = p + 50;
free(p2);
可以这样写:
int *p = malloc(1024 * 1024 * sizeof(int));
因为malloc()返回的是void类型的指针,所以可以直接用void指针接收返回值:
void *p = malloc(1024 * 1024);
写成纯数字形式1024 * 1024不需要写明白这1 MB要存什么类型,因为malloc()函数只分配内存,不管存储的是什么类型的数据。
如果需要强制类型转换,可以这样写:
void *p = (void *)malloc(100 * 1024 * 1024);
p改变之前,先用另一个指针q记录下它的值,改变p之后free(q)
不知道你这个问题是否已经解决, 如果还没有解决的话: