私はこのような配列の要素をコピーすることを考える:C:はunsigned char *は他のunsigned char型に配列複写要素バイト・アレイ
unsigned char *new_bytes_array = malloc(sizeof(unsigned char)*length/2);
for(int i=0, j=0; i<length; i++) {
if(i % 2 == 0) continue;
new_bytes_array[j] = old_bytes_array[i];
j++;
}
はない参照によりコピーが、値を作成しているが、私は参照やポインタの浅いコピーではなく、これがディープコピーであることを確認したいと思います。
私はこれが多分簡単で馬鹿なqustionだと知っていますが、スタック上ではmemcpy()のすべての配列と似たものは見つけられませんが、例えば2番目ごとにいくつかの要素だけをコピーしたい、 4番目の要素をスキップします(i%4 == 0スキップ要素の場合)。
あなたのコードは、「ディープコピー」を作ります。 –
'sizeof(unsigned char)'は常に1であるので、 '1 'と書くのは面倒です。(乗算の場合は無意味です)。削除することを検討してください。 – unwind
実際には別のプラットフォーム上で@unwind、 'sizeof(unsigned char)'は必ずしも1ではありませんので、それを削除するのは良い考えではないと思います。 – litao3rd