数据结构 / 内存的动态申请和释放

1.内存的动态申请 malloc

  • malloc 的头文件: #include <stdlib.h>
  • 格式: void *malloc(size_t size);
  • 参数:
    • size_t size: 申请堆区内存大小, 单位是字节;
    • size_t: 是数据类型, 是 unsigned long的宏定义的别名;
  • 返回值:
    • void *: 通用类型指针,使用时需要强转为具体的类型
  • 使用举例:
    • 单个变量内存分配:
      • int *p=(int *)malloca(sizeof(int));

    • 数组变量内存分配:
      • int arr[n];
        int *p=arr;
        int *p=(int *)malloc(sizeof(int)*n)

2内存的动态释放 free

  • malloc 的头文件: #include <stdlib.h>
  • 格式: void free(void *ptr);
  • 参数:
    • void *ptr: 释放内存的变量指针;
  • 返回值: 
  • 使用举例:
    • int *p=(int *)malloc(sizeof(int));
      free(p); // 堆区内存释放后, p 的指针指向还是原来的地址  
      p=NULL;  //p必须赋值NULL来防止野指针

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 C 语言中,可以通过判断指针是否为 NULL 来判断动态申请存储空间是否成功。如果指针为 NULL,则说明申请失败。 代码示例: ``` #include <stdio.h> #include <stdlib.h> int main() { int *p = NULL; int size = 10; p = (int*) malloc(size * sizeof(int)); if (p == NULL) { printf("动态申请存储空间失败!\n"); } else { printf("动态申请存储空间成功!\n"); // 在这里可以对 p 指向的内存进行操作 free(p); // 使用完后需要释放内存 } return 0; } ``` ### 回答2: 在C语言中,我们可以使用malloc函数动态申请存储空间。malloc函数的原型是: ```c void *malloc(size_t size); ``` 其中,size是需要分配的内存空间大小,单位为字节。malloc函数返回一个指向void类型的指针,指向分配的内存空间的起始地址。如果分配失败,则返回NULL。 因此,在判断动态申请存储空间是否成功时,我们可以通过检查malloc函数返回的指针是否为NULL来进行判断。 下面是一个简单的示例代码: ```c #include <stdio.h> #include <stdlib.h> int main() { int *arr; // 定义一个int类型指针 int size = 10; arr = (int *)malloc(size * sizeof(int)); // 动态申请存储空间 if (arr == NULL) { printf("动态申请存储空间失败!\n"); } else { printf("动态申请存储空间成功!\n"); // 使用arr指针访问和操作申请的存储空间 free(arr); // 释放申请的存储空间 printf("存储空间已释放!\n"); } return 0; } ``` 在上述代码中,我们定义了一个整型指针arr,然后通过malloc函数动态申请了一块大小为size的int类型存储空间。之后判断分配是否成功,如果成功,则输出提示信息,然后我们可以使用arr指针来访问和操作这段存储空间;如果失败,则输出分配失败的提示信息。最后,使用free函数释放动态申请的存储空间。 希望以上内容对您有帮助! ### 回答3: 在C语言中,我们可以使用指针来进行动态内存分配和释放。判断数据结构中向系统动态申请存储空间是否成功的方法是通过判断指针是否为NULL来确定。 首先,我们使用malloc函数来申请存储空间,如下所示: ``` int* data = (int*)malloc(sizeof(int)); ``` 这里的data是一个指向int类型的指针变量,通过malloc函数申请了一个int大小的存储空间。然后,我们可以通过判断指针是否为NULL来判断内存分配是否成功。如果内存分配成功,指针不会为NULL;如果失败,指针会被赋值为NULL。 ``` if(data != NULL) { // 内存分配成功 // 进行其他操作 } else { // 内存分配失败 // 处理错误 } ``` 当我们使用完存储空间后,应该使用free函数将其释放,以便其他程序能够使用这些内存释放内存的代码如下: ``` free(data); ``` 综上所述,我们可以通过判断指针是否为NULL来判断数据结构中向系统动态申请存储空间是否成功。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值