在为申请内存块而调用内存分配函数时,如malloc,函数会返回void*型的值?

2025-02-28 07:06:56
推荐回答(3个)
回答1:

void* 是说 malloc 成功执行的时候返回一个无类型指针
无法定位满足我们需要的足够大的内存块,函数会返回空指针
是说 内存不足 返回NULL

int* a;
if ((a=malloc(1000)) == NULL)
{
内存不足执行这里
}
else
{
成功分配内存执行这里
}

空指针与void*类型指针当然不一样

空指针 是说这个指针的值是NULL,指针本身的类型可能是各种类型
void*类型指针 是说这个指针的类型是void*,他的值也可能是NULL

回答2:

是啊 malloc函数返回一个void型指针 ,, 因为函数要把这个指针付给一个任意型的指针 比如 int* char* 为了通用性 所以它本身是void*的 ....

回答3:

比如你现在要申请一个100K的内存空间(这个空间在物理上一定是连续的),但是现在内存中已经没有这么大的连续空间(内存已满,或只有若干小于100K的空间),那么结果就是无法定位,只能返回空指针。
具体的内存管理在操作系统里会讲。。。