迷迷糊糊的话 2023-09-18 16:43 采纳率: 33.3%
浏览 5
已结题

c语言指针内存分配问题

#include <stdio.h>
#include <stdlib.h>

static char **g_line_info;

static void sip_selected_init(int32_t line_num) {
  const char *temp = locale_info_tr(locale_info(), "Line");
  g_line_info = (char **)malloc(sizeof(char *) * line_num);

  for (int32_t i = 0; i < line_num; i++) {
    char *lin_info = malloc(32);
    snprintf(lin_info, 32, "%s%s%d", temp, " ", i + 1);
    g_line_info[i] = lin_info;
  }
}

static void sip_selected_deinit(int32_t line_num) {
  for (int32_t i = 0; i < line_num; i++) {
    free(g_line_info[i]);
    g_line_info[i] = NULL;
  }
  free(g_line_info);
  g_line_info = NULL;
}

int main() {
  sip_selected_init(1);
  sip_selected_deinit(1);

  // 其他代码...

  return 0;
}

以上代码,为什么不用释放line_info

  • 写回答

3条回答 默认 最新

  • 隐蔽之鲷 2023-09-18 17:09
    关注

    不是没有释放,只是通过将每次循环创建的line_info字符串地址存放到g_line_info字符串数组内,之后在方法sip_selected_deinit根据字符串数组的下标进行释放line_info字符串

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月27日
  • 已采纳回答 9月19日
  • 创建了问题 9月18日

悬赏问题

  • ¥15 openFOAM DPMFoam
  • ¥15 将查询到的值,赋值到table指定行中
  • ¥50 docker容器内部启动shell脚本多命令
  • ¥15 请问python的selenium怎么设置referer
  • ¥15 请教下, VS QT 环境下, QTOPCUA 的源文件报错,这种情况咋查呢 ?
  • ¥20 UNITY webgl关于文档的上传和下载问题
  • ¥15 安霸cv22 + rtl8211f 千兆,udp传输丢包
  • ¥15 关于区块链和边缘环境搭建的相关问题
  • ¥15 windows远程桌面断卡重连软件卡顿问题
  • ¥30 Unity 实现扫描效果