ghblk 2023-05-31 12:09 采纳率: 85.7%
浏览 34

关于子函数动态分配内存的问题


#include<stdio.h>
#include<stdlib.h>
int* fun(int *a) {
    int *c = (int*)malloc(2 * sizeof(int));
    for (int i = 0; i < 5; i++) {
        c[i] = a[i];
    }
    return c;
}
int main() {
    int a[5] = {1, 2, 3, 4, 5}, *b;
    b = fun(a);
    for (int i = 0; i < 5; i++) {
        printf("%d ", b[i]);
    }
    return 0;
}

我只动态分配了8个字节,应该是只能存2个int的,应该只能返回出2个元素,输出的结果应该是1 2。可是子函数却完整的把数组返回回来了。

img

  • 写回答

2条回答 默认 最新

  • 喝茶品人生 2023-05-31 12:20
    关注

    你这里Fun函数内部不是使用了5个元素的循环吗?修改下条件I<2,还有你这里怎么会输出01呢,前8个字节是12

    评论 编辑记录

报告相同问题?

问题事件

  • 修改了问题 5月31日
  • 创建了问题 5月31日

悬赏问题

  • ¥15 工价表引用工艺路线,应如何制作py和xml文件
  • ¥15 根据历史数据,推荐问题类型
  • ¥15 需要仿真图,简单的二阶系统实例
  • ¥15 stm32光控照明仿真
  • ¥15 使用人工智能的方法生成满足一定统计参数要求的随机数序列
  • ¥15 SENT协议中相关问题咨询
  • ¥15 URL地址href跳转问题
  • ¥15 mysql数据库备份恢复
  • ¥15 mmdetection mask-rcnn
  • ¥25 matlab可以将微分方程的解显示为相图形式吗