最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談C#互操作的內(nèi)存溢出問題

 更新時(shí)間:2013年10月10日 10:00:06   作者:  
以前了解過c++的棧內(nèi)存溢出,沒想到在c#里被我遇到了,問題看似不大,如何被恰好相鄰的四個(gè)字節(jié)是返回地址,說不定危害不小??!看來c#的互操作還是得小心為好

c#調(diào)用C++DLL代碼,發(fā)現(xiàn)了一個(gè)隱藏很深的問題。 危害很大,而且不易察覺。

大概是申明c++的函數(shù)時(shí)候,有一個(gè)long類型的指針。在C#中我的申明成了這樣:

public extern void Method(ref uint para);

最初怎么也沒有發(fā)現(xiàn)這里面有什么問題,知道這個(gè)隱藏的問題暴露出來,把前面申明的一個(gè)變量改變了, 我才恍然大悟。

復(fù)制代碼 代碼如下:

uint test = 0;
int *p = new IntPtr();
Method(ref test);

在調(diào)用Method這里下斷點(diǎn),p的值是分配的一個(gè)內(nèi)存地址。F10跳過Method,p指針就指向了0x00000000!!;

初步分析,是在棧上只給test分配了4個(gè)字節(jié)存放值,結(jié)果通過互操作返回了8個(gè)字節(jié)的值,就把緊挨著的存放p指針地址的4個(gè)字節(jié)占用了,恰好這四個(gè)字節(jié)又是高位,返回?cái)?shù)據(jù)的高位都是0。 以前了解過c++的棧內(nèi)存溢出,沒想到在c#里被我遇到了,問題看似不大,如何被恰好相鄰的四個(gè)字節(jié)是返回地址,說不定危害不小?。?! 看來c#的互操作還是得小心為好。

相關(guān)文章

  • Qt實(shí)現(xiàn)網(wǎng)絡(luò)聊天室的示例代碼

    Qt實(shí)現(xiàn)網(wǎng)絡(luò)聊天室的示例代碼

    本文主要介紹了Qt實(shí)現(xiàn)網(wǎng)絡(luò)聊天室,實(shí)現(xiàn)一個(gè)在線聊天室, 使用tcp對(duì)客戶端和服務(wù)器端進(jìn)行通訊。具有一定的參考價(jià)值,具有一定的參考價(jià)值,
    2021-06-06
  • java 中ArrayList與LinkedList性能比較

    java 中ArrayList與LinkedList性能比較

    這篇文章主要介紹了java 中ArrayList與LinkedList性能比較的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • c++中strcpy函數(shù)在VS2015無法使用的問題

    c++中strcpy函數(shù)在VS2015無法使用的問題

    這篇文章主要介紹了c++中strcpy函數(shù)在VS2015無法使用的問題,具有一定的參考價(jià)值,有需要的可以了解一下。
    2016-11-11
  • c++ 對(duì)數(shù)器實(shí)現(xiàn)示例

    c++ 對(duì)數(shù)器實(shí)現(xiàn)示例

    對(duì)數(shù)器用于在自己的本地平臺(tái)驗(yàn)證算法正確性,本文詳細(xì)的介紹了c++ 對(duì)數(shù)器實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C++生成key-value鍵值的三種方式總結(jié)

    C++生成key-value鍵值的三種方式總結(jié)

    這篇文章主要為大家詳細(xì)介紹了C++中生成key-value鍵值的三種方式,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解下
    2023-09-09
  • C++實(shí)現(xiàn)類似延時(shí)停頓的打字效果

    C++實(shí)現(xiàn)類似延時(shí)停頓的打字效果

    這篇文章主要介紹的是使用C++實(shí)現(xiàn)類似延時(shí)停頓的打字效果的代碼,非常的簡單,推薦給大家,有需要的小伙伴可以參考下。
    2015-03-03
  • c語言獲取文件大小的示例

    c語言獲取文件大小的示例

    在C語言中測試文件的大小,主要使用二個(gè)標(biāo)準(zhǔn)函數(shù),下面是使用示例,需要的朋友可以參考下
    2014-02-02
  • C語言實(shí)現(xiàn)高精度加法

    C語言實(shí)現(xiàn)高精度加法

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)高精度加法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • C語言strtod()函數(shù)案例詳解

    C語言strtod()函數(shù)案例詳解

    這篇文章主要介紹了C語言strtod()函數(shù)案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++深入講解引用的特點(diǎn)及與指針的區(qū)別

    C++深入講解引用的特點(diǎn)及與指針的區(qū)別

    引用是C++一個(gè)很重要的特性,顧名思義是某一個(gè)變量或?qū)ο蟮膭e名,對(duì)引用的操作與對(duì)其所綁定的變量或?qū)ο蟮牟僮魍耆葍r(jià),這篇文章主要給大家總結(jié)介紹了C++中引用的相關(guān)知識(shí)點(diǎn),需要的朋友可以參考下
    2022-05-05

最新評(píng)論

镇平县| 梅河口市| 定结县| 禹城市| 扎鲁特旗| 杨浦区| 梁河县| 澜沧| 莲花县| 惠来县| 蓬安县| 榕江县| 黎城县| 江陵县| 密山市| 越西县| 两当县| 含山县| 阳新县| 梁平县| 广灵县| 松潘县| 比如县| 中牟县| 台江县| 新巴尔虎右旗| 赤水市| 北海市| 容城县| 温州市| 泌阳县| 桓台县| 西吉县| 滦南县| 崇左市| 潼关县| 湾仔区| 平塘县| 安福县| 安徽省| 山阴县|