C 中偏移量和長度超出陣列的界限的問題

2021-07-10 21:22:32 字數 807 閱讀 4731

...

public

static

byte tobytearray(string str)

string mystr = "hello";

byte src = new

byte[count];//count > 5

src = tobytearray(mystr);

file.write(src,0,count);..

.

以上為示例**段,當執行時,會提示偏移量和長度超出陣列的界限。

下面是filestream.write()的函式宣告:

void filestream.write(byte array,int offset,int

count)

其中,offset為對陣列array從零開始的偏移量。count為從offset位置開始要讀到流中的位元組個數。

(以上函式宣告只是乙個說明,跟本文問題相關度不大)

好了,當我除錯的時候發現,陣列src從src[5]開始就資料就不是0x00了,所以是tobytearray函式的原因,將原本為0x00的資料全部清空了,具體原因我沒有深究(假想一下,就像c語言裡一樣,給了乙個』\0』結束識別符號嗎?),

所以會導致我想訪問src[5]後面的位元組出現陣列越界的問題。

long filestream.seek(long offset, seekorigin origin);
這個偏移函式,幫我成功的解決了這個問題,覆蓋為0x00。

想想還是c語言好,透明。

C 中struct成員的偏移量的計算

c 中,計算struct成員的偏移量,有如下三種方法可用。假設有定義如下 struct st test 現想要求 b 相對於 st test 的偏移位址。1 常用的方法 size t st test 0 b 2 使用stl的定義,要包含 標頭檔案 offsetof st test b offseto...

C語言中的指標加減偏移量

首先看一段程式 輸出結果為 2,5 第乙個結果好說,a 1後指標指向了陣列中的 2 而第二個為什麼輸出 5 呢。原理是c語言中的指標加減後,會根據指標的型別採用不同的偏移量。比如,int a int b a 1 則 b a sizeof int char a char b a 1 則b a size...

C語言中的指標加減偏移量

首先看一段程式 cpp nogutter view plain copy include intmain int p int a 1 printf d,d n a 1 p 1 return 0 輸出結果為 第乙個結果好說,a 1後指標指向了陣列中的 2 而第二個為什麼輸出 5 呢。原理是c語言中的指...