You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

main()声明的指针经函数malloc后出现段错误的原因

段错误原因分析

核心问题是运算符优先级导致的非法内存访问:

  • 数组下标运算符[]的优先级高于间接访问运算符*,代码中的*ptr[i]会被编译器解析为*(ptr[i])。
  • ptr是int**类型(指向指针的指针),ptr[i]表示访问ptr指向的内存区域中第i个int*元素,但实际上ptr仅指向main函数里单个int*变量的地址,当循环中i >= 1时,ptr[i]会访问超出有效范围的内存,触发段错误。
  • 正确写法应为(*ptr)[i]:先通过*ptr解引用得到malloc分配的int数组首地址,再用[i]访问数组第i个元素。

修正后的关键代码片段:

// 替换原错误行
(*ptr)[i] = i ;
printf("%d %d\n" , i , (*ptr)[i]) ;

内容的提问来源于stack exchange,提问作者Luke Rossenvalden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 10:57:35