当前位置:首页 > 内存 > 正文

malloc分配内存

  • 内存
  • 2024-05-27 22:12:07
  • 594

一、if((str=(char*)malloc(10))==0),我知道malloc函数是动态调内存的,但是括号里面的东西是什么意思?malloc(10)表示分配10字节的堆内存;
(char*)是强制类型转换,因为malloc函数的返回类型是void*,必须强制为想要的类型;
str=..是先将转换结果强制设置为str,然后与0比较;
下面的==0是判断内存分配是否成功,如果str等于0。分配失败。


二、c语言动态数组如何扩充空间

C语言中的动态数组扩展空间主要是利用动态存储分配库函数来实现的。使用常用的malloc和calloc函数。

malloc()是C语言中用于动态存储管理的一组标准库函数的一部分。它的功能是在内存的动态存储中分配一个长度为size的连续区域。参数是无符号整数,返回值是指向分配的连续存储的起始地址的指针。

示例:

char*x;

x=(char*)malloc(10);//x指以10个字符为单位存储。

扩展信息:

函数定义

函数原型为void*malloc(unsignedintsize)。分配长度为size的连续空间用于内存中的动态存储。该函数的返回值是分配区域的起始地址,是一个指针函数,返回的指针指向分配区域的起始位置。

如果分配成功,则返回指向已分配内存的指针(该存储的初始值不确定)。否则,返回空指针NULL。当内存不再使用时,必须使用free()函数释放内存块。函数返回的指针必须正确对齐,以便它可以与任何数据对象一起使用。

参考来源:-malloc函数


三、C语言中结构体数组的大小如何动态分配结构体类型的数据数组和我们通常定义的基本类型的数组是一样的,只是类型发生了变化。
基类型数组动态分配大小:
int*a=(int*)malloc(sizeof(int)*10);//动态分配10个int类型的内存空间
结构类型数组分配大小:
structDIYDEFINE
{
inta;
charch;
longlnum;
};
DIYDEFINE*pDiy=(DIYDEFINE*)malloc(sizeof(DIYDEFINE)*10);//动态分配DIYDEFINE结构类型的内存空间,大小为10。