怎么做
  1. 题面里的虚线方框就是要填的空
  2. 点候选项,它会填进当前高亮的那个空
  3. 点已填好的空,可以把选项取回来重选
  4. 全部填满后「提交」才会亮起
卡住了就点右下角的 👩‍🏫 问 AI 老师,她会给提示但不直接给答案。

向系统借一块内存:malloc 与 free

👁️ 21 人浏览 💬 0 人评论 ❤️ 添加收藏

malloc 向系统借一块,free 还回去

堆

▲ p

p = malloc(…):借到 3 格,p 记着开头

free(p) 之后:块已归还,p 还记着旧地址(悬空)

数组的大小要在写程序时定死。如果要等运行时才知道要多少,就向系统借:

  • 先 #include <stdlib.h>;
  • p = (int *)malloc(n * sizeof(int));:借能放 n 个 int 的一块内存,返回这块的首地址;借不到返回 NULL,所以要判断;
  • 借到以后 p[i]、*(p + i) 和数组用法一样;
  • 用完 free(p); 还回去。借了不还叫内存泄漏。
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int n = 4, i, sum = 0;
    int *p;
    p = (int *)malloc(【0】);
    if (p == NULL)
        return 1;
    for (i = 0; i < n; i++)
        p[i] = (i + 1) * 10;
    for (i = 0; i < n; i++)
        sum += *(p + i);
    printf("%d\n", sum);
    【1】;
    return 0;
}

【0】处借够 n 个 int;【1】处归还;程序输出【2】。

请登录后作答。
去登录
👩‍🏫
AI
💬 题目评论
🔒 登录并作答后可看讨论