タグ付けされた質問 「memcpy」

11
memcpy()対memmove()
私は違いを理解しようとしているmemcpy()としmemmove()、そして私は、テキスト読み持っているmemcpy()のに対し、重複送信元と送信先の世話をしていないmemmove()んです。 ただし、これらの2つの関数を重複するメモリブロックで実行すると、どちらも同じ結果になります。たとえば、memmove()ヘルプページで次のMSDNの例を見てください。 の欠点を理解し、それmemcpyをどのようにmemmove解決するためのより良い例がありますか? // crt_memcpy.c // Illustrate overlapping copy: memmove always handles it correctly; memcpy may handle // it correctly. #include <memory.h> #include <string.h> #include <stdio.h> char str1[7] = "aabbcc"; int main( void ) { printf( "The string: %s\n", str1 ); memcpy( str1 + 2, str1, 4 ); printf( "New …
157 c  memcpy  memmove 


2
「バイト数」をゼロに設定してmemcpy()およびmemmove()を呼び出すことはできますか?
私はactully移動することは何もないとき/治療の例に必要でコピーしていますmemmove()/ memcpy()エッジケースなど int numberOfBytes = ... if( numberOfBytes != 0 ) { memmove( dest, source, numberOfBytes ); } または私はチェックせずに関数を呼び出す必要があります int numberOfBytes = ... memmove( dest, source, numberOfBytes ); 前のスニペットのチェックは必要ですか?
102 c++  c  pointers  memcpy  memmove 

2
JPEG of Deathの脆弱性はどのように機能しますか?
私が取り組んでいるプロジェクトの死のJPEGと呼ばれる、Windows XPおよびWindows Server 2003の GDI +に対する古いエクスプロイトについて読んでいます。 エクスプロイトについては、次のリンクで詳しく説明されています。http: //www.infosecwriters.com/text_resources/pdf/JPEG.pdf 基本的に、JPEGファイルには、COMと呼ばれる(空の可能性がある)コメントフィールドを含むセクションと、COMのサイズを含む2バイトの値が含まれています。コメントがない場合、サイズは2です。リーダー(GDI +)はサイズを読み取り、2を引いて、適切なサイズのバッファーを割り当てて、ヒープにコメントをコピーします。攻撃で0は、フィールドに値を配置します。GDI +はを減算し2、その値はによって-2 (0xFFFe)符号なし整数に変換さ0XFFFFFFFEれmemcpyます。 サンプルコード: unsigned int size; size = len - 2; char *comment = (char *)malloc(size + 1); memcpy(comment, src, size); ことを観察するmalloc(0)3行目のヒープ上に割り当てられていないメモリへのポインタを返すべきです。どのようにして0XFFFFFFFEバイト(4GB!!!!)を書き込むとプログラムがクラッシュしないのでしょうか?これは、ヒープ領域を超えて、他のプログラムやOSの領域に書き込みますか?次に何が起こりますか? 私が理解しているようにmemcpy、それは単にn宛先からソースに文字をコピーします。この場合、ソースはスタックにあり、宛先はヒープにありnます4GB。
94 c++  security  memcpy  malware 

9
strcpyとmemcpy
違いは何であるmemcpy()とはstrcpy()?私はプログラムの助けを借りてそれを見つけようとしましたが、両方とも同じ出力を与えています。 int main() { char s[5]={'s','a','\0','c','h'}; char p[5]; char t[5]; strcpy(p,s); memcpy(t,s,5); printf("sachin p is [%s], t is [%s]",p,t); return 0; } 出力 sachin p is [sa], t is [sa]
81 c  memcpy  strcpy 

4
memcpy(0,0,0)を実行しても安全であることが保証されていますか?
私はC標準にあまり精通していないので、ご容赦ください。 規格で保証されているかどうか知りたいのですが memcpy(0,0,0)安全が。 私が見つけた唯一の制限は、メモリ領域が重複している場合、動作が定義されていないことです... しかし、ここでメモリ領域が重複していると見なすことができますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.