如果你们看到以下代码,则没有分配内存(只分配了0个字节(为 ptr 。但是,如果没有空间,则可以初始化Ptr [0],Ptr [1] ..... ptr [n]。
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main(){
int *ptr;
ptr = malloc(0);
ptr[0] = 0;
ptr[1] = 4;
ptr[2] = 3;
printf("%d %d %d",ptr[0],ptr[1],ptr[2]);
}
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
int main(void){
float *ptr;
ptr=malloc(2);
float j=0;
for(int i=0;i<1000;i++,j++){
ptr[i]=j;
printf("%f n",ptr[i]);
}
}
要显示的输出:分割错误;
可能显示的输出:012 ...... 999
但实际输出是:012 ......... 679
我们可以得出结论,malloc正在分配额外的660字节。
在这种情况下,Malloc从您指定的内容中分配了额外的字节。但这并不适用于所有情况。这只是一个例子。Malloc会根据环境的不同而显示不确定的行为。