【发布时间】:2016-03-28 13:13:12
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
typedef struct vertex_t* Vertex;
struct vertex_t {
int id;
char *str;
};
int main(int argc, char* argv[])
{
int size = 10;
Vertex* vertexList = (Vertex*)malloc(size * sizeof(Vertex));
vertexList[0]->id = 5;
vertexList[0]->str = "helloworld";
printf("id is %d", vertexList[0]->id);
printf("str is %s", vertexList[0]->str);
return(0);
}
嗨!我正在尝试为一组顶点进行 malloc。当我运行该程序时,它没有打印出任何内容,并说该程序已停止运行。但是如果我只是给 vertexList[0]->id 一个值而不是 vertexList[0]->str 并且只打印 vertexList[0],它会打印出“id is 5”......然后程序仍然停止。所以我认为我在 malloc 部分做错了什么? :/ 提前感谢您的帮助!!!
【问题讨论】:
-
你为
size分配空间指针(typedefs的乐趣)并且指针未初始化;它们指向任何东西(或者它们指向任何东西,如果你愿意的话) -
1) 不要
typedef指针。 2) 不要将malloc& friends 或void *的结果投射到C 中。