將結構添加到我的隊列後,出現以下代碼的分段錯誤。C中隊列出現分段錯誤
當MAX_QUEUE設置爲高電平時發生分段故障,但當設置爲低電平(100或200)時,不會發生錯誤。自從我上次用C語言編程以來,這已經有一段時間了,所以我希望有任何幫助。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_QUEUE 1000
struct myInfo {
char data[20];
};
struct myInfo* queue;
void push(struct myInfo);
int queue_head = 0;
int queue_size = 0;
int main(int argc, char *argv[])
{
queue = (struct myInfo*) malloc(sizeof(struct myInfo) * MAX_QUEUE);
struct myInfo info;
char buf[10];
strcpy(buf, "hello");
while (1)
{
strcpy(info.data, buf);
push(info);
}
}
void push(struct myInfo info) {
int next_index = sizeof(struct myInfo) * ((queue_size + queue_head) % MAX_QUEUE);
printf("Pushing %s to %d\n", info.data, next_index);
*(queue + (next_index)) = info;
queue_size++;
}
輸出:
Pushing hello to 0
Pushing hello to 20
...
Pushing hello to 7540
Pushing hello to 7560
Pushing hello to 7580
Segmentation fault
隊列中,將它聲明爲'struct myInfo queue [MAXQUEUE]'和帶有'queue [next_index]''的表達式的引用元素可能更爲明智。雖然我在一段時間內還沒有用C語言編程。 – 2010-05-11 15:19:16