【发布时间】:2017-02-05 19:15:08
【问题描述】:
所以我有一个结构“序列”,其中有一个 char*。当我尝试创建一个序列时,每当我尝试更改 char* 时,它都会出现段错误。这是相关的代码。结构:
typedef struct _sequence {
unsigned int length;
unsigned char* bytes;
} Sequence;
构造函数:
Sequence* newSequence(unsigned char firstByte) { //Creates new sequence, allocates memory
printf("Creating new Sequence\n");
Sequence* seq = (Sequence*)malloc(sizeof(Sequence));
printf("Have new sequence\n");
seq->length = 1;
printf("Set length\n");
seq->bytes[0] = firstByte;
printf("Set variables\n");
return seq;
}
现在我这里有一个 main 函数只是为了测试目的,这个文件最终将没有 main 函数。但这是我过去测试的:
int main() {
char test[] = "ab";
printf("Testing sequences!\n");
Sequence* newSeq = newSequence(test[0]);
printf("Made new sequence!\n");
outputSequence(newSeq, stdout);
printf(" <-- new Sequence created\n");
return 0;
}
printfs 再次用于测试目的。它总是在构造函数中一直打印到“Set length\n”,然后是段错误。我究竟做错了什么?谢谢!
【问题讨论】:
标签: c struct segmentation-fault