看板 LinuxDev 關於我們 聯絡資訊
請教各位: 像以下的程式架構: #include xxx.h .............. static int data[1000]; void get_data() { for (i=0; i<1000;i++) data[i] = some_process(); } void save_data(int status) { save(data); } int interrupt_will_do() { get_data(); save_data(Now_Status); } data[1000]這個 matrix 會一直在get_data()更新然後做save_data()等處理 這樣的話, (1)到底data[]像以上的方式宣告在driver的一開始較好(因為這樣 只需要宣告一次), 還是 (2)每次進入get_data()再宣告,然後將data[]的pointer傳給save_data()較好?? 或是(3) 在driver code一開始用 struct 的方式宣告, 然後在 get_data() 及 save_data 以 some_struct.data[] 來處理較好???? 謝謝各位的指導.. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.204.202.188
yvb:(2) 如果 data 不是 static, 那就要注意是否會發生 12/07 01:42
yvb: C_and_CPP 置底十三誡之第5誡或第6誡之狀況. 12/07 01:43
yvb:如果是 static, 感覺沒太大差別, 只是 variable scope 問題. 12/07 01:45
yvb:若要考慮未來可能多個instances,那(3)或許是較佳選項, 12/07 01:46
yvb: 但可能會是 some_struct_pointer->data[] ? 12/07 01:48
greenlinux:To yvb: 謝謝你的指導 12/07 14:33
Bode123:2 作法有問題 離開後區域變數值就被其他東西改了 12/13 16:59
Bode123:1跟3不差不多意思吧 我覺得1 3兩個都可 12/13 17:01
Bode123:但要注意是否需要LOCK一下 12/13 17:02
leolarrel:要考慮到,driver是在kernel 的環境執行,stack 大小不是 12/21 11:38
leolarrel:無限制的 12/21 11:39