gpt4 book ai didi

c - 指向结构的指针数组,调试时只有 SIGSEGV

转载 作者:行者123 更新时间:2023-12-04 12:33:40 25 4
gpt4 key购买 nike

以下代码会引发 SIGSEGV,但仅限于调试时。

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

typedef struct enemy_desc
{
int type;
int x;
int y;
}enemy;

int main()
{
enemy **enemies;
enemies=(enemy **)malloc(sizeof(enemy *)*16);

enemies[0]->type=23;

printf("%i",enemies[0]->type);
return 0;
}

最佳答案

您只是为 16 个指向敌人的指针创建了空间,但并未创建您尝试使用的实际敌人对象。

这是一个例子,我创建了一个敌人对象指向数组中的第一个指针。

#include <iostream>

typedef struct enemy_desc
{
int type;
int x;
int y;
}enemy;

using namespace std;
int main(int argc, char **argv)
{
enemy **enemies;
enemies=(enemy **)malloc(sizeof(enemy *)*16);
memset(enemies, 0, sizeof(enemy*)*16);

enemies[0] = (enemy *) malloc(sizeof(enemy));
memset(enemies[0], 0, sizeof(enemy));

enemies[0]->type=23;
printf("type: %i x: %i y: %i\n\n",enemies[0]->type, enemies[0]->x, enemies[0]->y);

enemies[0]->x = 10;
enemies[0]->y = 25;
enemies[0]->type= 7;
printf("type: %i x: %i y: %i\n\n",enemies[0]->type, enemies[0]->x, enemies[0]->y);

free(enemies[0]);
free(enemies);
return 0;
}

关于c - 指向结构的指针数组,调试时只有 SIGSEGV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3503688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com