我已經看過堆棧溢出中的其他條目,但它們合法地超出了界限。爲什麼:錯誤:數組下標超出數組範圍
在我的代碼,我纏繞我的方式,通過一系列嵌套的結構:
static inline void * get_resp_ptr(U32 blade_ix, U32 q_id)
{
per_blade_data * bd = bfr_blade_data + blade_ix;
bfr_pendcmd_q_t * pcq = bd->bfrpb_ques + q_id;
response_t * res = pcq->bfrpq_resp;
return (void *)(res + pcq->bfrpq_resp_rdix);
}
「bfrpq_resp」是鍵入response_t的指針。這個函數的最後兩行都是得到錯誤信息。打敗了我......任何有關編譯器試圖說的東西的猜測?我很想投入到uintptr_t中,並使用算術。 :(
編輯:。沒有工作pcq->的bfrpq_resp的uintptr_t中導致相同的錯誤消息的分配僅僅引用域產生的結果,我覺得這裏的GCC需要一個不同的錯誤信息
。
可以想象。我有點懷疑,因爲我沒有在該行上索引bfrpq_resp。直到返回聲明。然後,我再次使用:mips64-octeon-linux-gnu-gcc(Cavium Inc. Version:2_3_0 build 116)4.3.3,對於那個bug也許太舊了)。另一種可能性是關於bfrpb_ques + q_id的一些混淆。這是一個由9個元素組成的數組,其中q_id總是作爲常數0到8傳遞。我將運行它..... –