2016-04-23 186 views
-3

我正在使用char *數組來創建緩衝區,以將信息從多個映射線程移動到還原線程。我需要使陣列循環,但是,當陣列空間不足時,我不斷收到分段錯誤。我該如何製作圓形陣列?我現在有循環字符數組緩衝區 - c

for(j = 0; j < i; j++){ 
    int next = mr->nextIndex + j; 
    if(next > 1023){ 
     next = 0; 
    } 
    mr->buffer[next] = temp[j]; 
} 

陣列被設置爲,

new_mr->buffer = malloc(sizeof(char *) * MR_BUFFER_SIZE); 

與宏爲1024的任何幫助表示讚賞。

溫度是

char *temp = malloc(sizeof(char *)); 

,並從

memcpy(temp, kv, i); 

獲取其值和KV傳遞到從主要功能。

+3

沒有足夠的信息。什麼是溫度和我是什麼? – Pemdas

+0

temp是char *的char指針大小,i是被複制到緩衝區的數據的大小(以字節爲單位) –

+3

temp是什麼?顯示代碼。 – Pemdas

回答

0

這是錯誤的:

char *temp = malloc(sizeof(char *)); 

你一些數據存儲到使用存在,但memcpy()的存儲空間只有sizeof(char*)這是4首或8個字節。您可能打算在那裏使用其他尺寸,例如您將i的值傳遞給memcpy()

0
char *temp = malloc(sizeof (char *)); 

應該是

char *temp = malloc(sizeof (char) * i); // sizeof (char) can be omitted 

因爲temp預計指向的char陣列。


mr->buffer[next] = temp[j]; 

應該是

mr->buffer[next] = &temp[j]; 

因爲mr->buffer[next]char *類型。