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

运行自制C程序时出现Permission denied错误,请求技术支持

问题1:编译命令错误导致无法执行

你用了gcc -c test.c -o test,其中-c参数的作用是只编译生成目标文件(.o),不进行链接生成可执行程序。所以生成的test是目标文件,不是可执行文件,自然会提示权限不足。

解决方法:去掉-c参数,重新编译:

gcc test.c -o test -Wall -std=c11

编译成功后,再执行./test即可(但代码本身还有内存问题,需要先修复)。

问题2:代码中的内存访问错误

即使编译正确,你的代码运行后会触发段错误,原因是image->r是未初始化的指针:

  • 你只给Image结构体本身分配了内存,但结构体里的r指针并没有指向有效的内存空间,直接给image->r[0]赋值会访问非法内存。

修复后的代码:

#include <stdio.h>
#include <stdlib.h>
typedef struct{
        unsigned int *r;
}Image;
int main()
{
    printf("yes\n");
    unsigned int a = 7;
    Image *image;
    // 给结构体分配内存
    image = malloc(sizeof(Image));
    // 给r指针分配内存,这里分配1个unsigned int的空间
    image->r = malloc(sizeof(unsigned int));
    // 现在可以安全赋值
    image->r[0] = a;
    printf("r[0] = %d\n",image->r[0]);
    // 注意:先释放r指向的内存,再释放结构体本身
    free(image->r);
    free(image);
    return 0;
}
额外提示
  • 编译时的-Wall参数会显示更多警告信息,能帮你提前发现潜在问题,比如未初始化指针这类隐患。
  • 内存分配后可以加空指针检查(比如if (image == NULL)),避免内存分配失败导致的错误,初学阶段可以先重点理解指针和内存分配的基本逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 10:30:24