C 共享記憶體例項 附原始碼

2021-09-06 12:31:12 字數 1202 閱讀 4584

原文

c#共享記憶體例項 附原始碼

網上有c#共享記憶體類,不過功能太簡單了,並且寫記憶體每次都從開頭寫。故對此進行了改進,並做了個小例子,供需要的人參考。

主要改進點:

通過利用共享記憶體的一部分空間(以下稱為「資料資訊區」)來儲存當前記憶體中儲存的資料資訊(count和length或者新增其他資訊),完成了對記憶體讀寫功能的完善。

在讀寫記憶體時,讀寫資料資訊區。

1.寫共享記憶體

根據共享記憶體當前的使用length,依次往後寫。

2.讀共享記憶體

讀取從共享記憶體的起始位置(不包括資料資訊區)至length的所有資料。

3.關鍵點

把intptr型的m_pwdata當指標來操作,實現從記憶體的任意位置讀寫資料。

m_pwdatawrite = (intptr)(m_pwdata.gethashcode() + m_length + infosize);

4.可改進處

在資料資訊區,新增每條資料的length資訊,即可實現自由讀取資料,而不必每次都起始讀。

例項截圖如下:

讀資料資訊:

public int readlengthandcount()

else

string str = system.text.encoding.unicode.getstring(bytdata).trim('/0');

string strs = system.text.regularexpressions.regex.split(str,"/0");

m_length = system.convert.toint32(strs[0]);

m_count = system.convert.toint32(strs[1]);

return 0;     //讀成功

}寫資料資訊:

public int writelengthandcount(int length, int count)

else

semwritelength.release();

return 0;

}本工程在以下環境下編譯通過:

windows xp sp3

microsoft visual c# 2005

microsoft visual studio 2005 v8.0.50727.42

microsoft .net framework v2.0.50727

C 委託例項分析 附原始碼

一直都聽說c 中的委託與事件非常重要,都沒有什麼切身的體會,而這次通過做乙個winform二次開發的專案才真正感覺到了委託與事件的犀利之處。1.c 中的事件和委託的作用?事件代表乙個元件能夠被關注的一種訊號,委託是可以把乙個過程封裝成變數進行傳遞並且執行的物件。2.他們之間的關係?委託是一種型別,事...

共享記憶體操作類 C 原始碼

vc 的共享記憶體操作 實現起來相對比較容易,但是用c 語言來實現,就有一定難度,由於工作需要,把以前vc開發的共享記憶體 要用c 實現,別說,還費了不少周折,畢竟c 操作api函式和位址指標不是那麼直接,還好,總算完成了,效果還不錯。共享記憶體操作類 using system using syst...

C 共享記憶體操作類 含原始碼

vc 的共享記憶體操作 實現起來相對比較容易,但是用c 語言來實現,就有一定難度,由於工作需要,把以前vc開發的共享記憶體 要用c 實現,別說,還費了不少周折,畢竟c 操作api函式和位址指標不是那麼直接,還好,總算完成了,效果還不錯。共享記憶體類 測試例程 using system using s...