[問題] C++ 陣列存取次數 之計量
開發平台:VC++ 2010
問題是這樣的,在下目前在研究一個open source
研究的目的是要在這份code中塞入一個演算法
這個演算法可以降低儲存臨時資料的記憶體使用量
舉個簡單的例子:
[版本一] 未使用演算法
int temp_data[256]; //某個用來暫存資料的陣列
// computing..
// 把計算出來的值一個一個放入temp_data中存起來
[版本二] 使用演算法
char* compressed_temp_data;
// computing
// 把把計算出來的值,壓縮成binary後放進compressed_temp_data
所以說,在下的任務就是要找出所有在open source code內
有對temp_data[]做存取的code
把它從版本一改成版本二這樣
現在的問題是,這個temp_data[]是某一個class的private成員
在整份code中,要存取這個temp_data的話
會先透過這個class內部的一個 get_pointer_at(address)之類的函式
取得temp_data[address]的記憶體位置後,再開始處理
所以我要對temp_data[]進行壓縮演算法時
根本不知道被取出去的temp_data[]中,是那些element被讀取或被寫入
(也就是說我無法明確知道外部的code,是寫入temp_data[0]? 或是讀取temp_data[15]..etc)
我必須確切的知道外部的程式是access哪一個明確的位置
也必須明確的知道外部的程式是對這塊記憶體Read還是Write
目前唯一想到的方法只有暴力法...
就是去搜尋整份code中有出現get_pointer_at(address)的地方
然後一行一行的看他是動到那些位置,看他是讀還是寫。接著一行一行的改
但是整份open source大的很誇張,要人工暴力trace實在是太花時間
所以我想請問有沒有辦法可以偵測某一塊記憶體
被access的次數,以及這個access是read或write嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.37.135.88
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1441435767.A.66B.html
推
09/05 14:53, , 1F
09/05 14:53, 1F
推
09/05 16:01, , 2F
09/05 16:01, 2F
→
09/05 16:01, , 3F
09/05 16:01, 3F
推
09/05 16:06, , 4F
09/05 16:06, 4F
→
09/05 16:08, , 5F
09/05 16:08, 5F
→
09/05 16:09, , 6F
09/05 16:09, 6F
→
09/05 16:11, , 7F
09/05 16:11, 7F
→
09/05 16:12, , 8F
09/05 16:12, 8F
推
09/05 16:30, , 9F
09/05 16:30, 9F
→
09/05 16:30, , 10F
09/05 16:30, 10F
→
09/05 16:31, , 11F
09/05 16:31, 11F
→
09/05 16:32, , 12F
09/05 16:32, 12F
→
09/05 16:32, , 13F
09/05 16:32, 13F
→
09/05 16:33, , 14F
09/05 16:33, 14F
推
09/06 12:03, , 15F
09/06 12:03, 15F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章