問題タブ [malloc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
6 に答える
3956 参照

linux - 一部のアロケータは怠惰ですか?

LinuxでメモリをmallocするCプログラムを作成し、ループで実行しましたが、TOPはメモリ消費量を表示しませんでした。

それから私はそのメモリで何かをしました、そしてTOPはメモリ消費を示しました。

私がmallocするとき、私は本当に「メモリを取得」しますか、それとも「怠惰な」メモリ管理がありますか?それは私がそれを使用する場合にのみメモリを提供しますか?

(TOPは、使用時にメモリ消費量しかわからないというオプションもあるので、よくわかりません。)

ありがとう

0 投票する
4 に答える
2118 参照

c++ - C ++でのchar *の割り当てと解放

みなさん、ヒープ破損エラーが発生しています。わかりません。

上記のコードは、_gcvt_s と pushFont() で c ポインターを使用する唯一の時間です。これは、char * を最初のパラメーターとして単純に受け入れ、テキストを画面に表示します。それ以外はcを使用しません。メイン ループの後で c を解放しようとすると (そうすべきだと思います)、Visual Studio がヒープでエラーを取得した (ヒープの破損) というエラーが表示されます。

pushFont への呼び出しをコメントアウトしても、まだエラーが発生します。

文字 (ヒープに割り当てた 1 バイト) を解放するとヒープが破損する理由を誰かに説明してもらえますか?

最後に、私のメイン ループは多くのことを行います。バディと私は WinSocket でピンポン ゲームを作成しています。本体の残りの部分はゲームのループです。投稿する必要があるとは思いませんでしたが、必要に応じてメインループ全体で投稿を更新しますが、malloc() と free() の理解が不十分だと思います。

皆さんありがとう、

0 投票する
6 に答える
19133 参照

linux - malloc は、Linux (およびその他のプラットフォーム) での割り当てのバッキング ページを遅延して作成しますか?

Linux では、malloc(1024 * 1024 * 1024)malloc は実際に何をするのでしょうか?

仮想アドレスを割り当てに割り当てていると確信していますが (必要に応じて空きリストを調べて新しいマッピングを作成することにより)、実際に 1 GiB 相当のスワップ ページを作成しますか? それともmprotect、実際に触れたときにアドレス範囲とページを作成しますmmapか?

(Linux を指定しているのは、標準がこの種の詳細について沈黙しているからですが、他のプラットフォームも同様に何をしているのか知りたいです。)

0 投票する
1 に答える
438 参照

objective-c - Mallocされた文字列にガベージ値が含まれています

クロスプラットフォームにすることを期待して、Objective-CライブラリをCライブラリに変換しました。しかし、私がこのことを処理のために送るまで、すべてがうまくいくように見えます。

エラーが発生した時点です。

いくつかのリビジョンを振り返ると、デバッガーに何かがあることに気づきました。

このようにmallocされた文字列の直後:

theStringは\x03で、*theStringは"3'\003'"であることがわかります。

最初は、strcatなどを何も付けていないので、これは奇妙な記憶だと思いましたが、奇妙な開始文字が引き継がれ、同様のmallocを実行する他のすべてのポイントで繰り返されます。

通常の処理では、これで問題ありません。残念ながら、私はそれが何であるかを理解していません、さもなければ、私はその最初のキャラクターか何かを切り落とすような劇的な何かをするでしょう。

それが何であるか、そしてそれを安全にNSStringに変換したい場合、私がそれをどのように扱うかを誰かが私に説明できますか?

0 投票する
7 に答える
7824 参照

xcode - OS Xでmalloc()、calloc()、free()などをオーバーライドするにはどうすればよいですか?

最新のXCodeとGCCを想定して、メモリ割り当て関数をオーバーライドする適切な方法は何ですか(演算子new / deleteも同様だと思います)。デバッグメモリアロケータはゲームには遅すぎます。最小限の影響で自分で実行できるいくつかの基本的な統計が必要です。

Linuxではフックのおかげで簡単だと知っています。これは10年前にHeapManagerを書いたときのcodewarriorでは簡単なことでした。

悲しいことに、smartheapにはもうmacバージョンがありません。

0 投票する
8 に答える
6498 参照

c - C構造体を再帰的に解放する

割り当てたメモリへのポインタのみを含む構造体があります。各要素でfreeを呼び出すのではなく、ポインターである各要素を再帰的に解放する方法はありますか?

たとえば、次のレイアウトがあるとします。

そして私のコードでは、モデルを作成するために各構造体をmallocします。

次のように各ポインタを解放するのは簡単です。

各要素でfreeを呼び出すのではなく、mdlのポインターを再帰的に繰り返す方法はありますか?

実際には、それぞれにfree()を記述するだけの作業はほとんどありませんが、コードの重複を減らし、そこから学ぶのに役立ちます

0 投票する
7 に答える
2665 参照

c - 動的割り当て中にこのコードがクラッシュするのはなぜですか?

以下にこのコードスニペットがありますが、動的割り当てである「str」での割り当て中にクラッシュします。

file_sizeはゼロ以外、負ではない140未満の値

ARMを使用しています。これは実際には私のIntelPCで機能しますが、アームマシンでは機能しません。

0 投票する
13 に答える
77094 参照

iphone - mallocの「ダブルフリー」エラーの原因を見つける方法は?

Objective-Cでアプリケーションをプログラミングしていますが、次のエラーが発生します。

MyApp(2121,0xb0185000)malloc:***オブジェクト0x1068310のエラー:ダブルフリー
***デバッグするmalloc_error_breakにブレークポイントを設定します

NSAutoreleasePoolをリリースしたときに発生し、2回リリースしているオブジェクトがわかりません。

彼のブレークポイントを設定するにはどうすればよいですか?

この「オブジェクト0x1068310」が何であるかを知る方法はありますか?

0 投票する
3 に答える
14154 参照

c - malloc と free でのスレッドセーフについて

重複の可能性:
Malloc スレッドセーフ?

glibc の malloc() はスレッド セーフではないと聞きました。プロセスの複数のスレッドが同時に malloc() を呼び出すと、未定義の動作が発生するからです。そして私の質問は、スレッドが free() を呼び出した場合、別のスレッドが malloc() を呼び出している場合、これも未定義の動作につながるのでしょうか?

0 投票する
8 に答える
2220 参照

c - C malloc / free+fgetsパフォーマンス

ファイルAの行をループするときに、行を解析し、各文字列(char*)を。に入れchar**ます。

行の終わりで、ファイルBを開き、を使用して、そのファイルから文字を取得する手順を実行しfgetsます。次に、ファイルBを閉じます。fseekfgetc

行ごとにファイルBの再オープンと再クローズを繰り返します。

私が知りたいのは:

  1. を使用することでパフォーマンスが大幅に低下するため、動的ではなく静的なものを使用する必要がありますmallocか?freemyArray[NUM_STRINGS][MAX_STRING_WIDTH]char** myArray

  2. ファイルBを開いたり閉じたりすることによるパフォーマンスのオーバーヘッドはかなりありますか(概念的には、何千回も)?ファイルAがソートされている場合、fseekファイルBで「後方」に移動し、ファイルBで以前に配置されていた場所をリセットする方法はありますか?

編集2つのアプローチにより、実行時間が大幅に短縮されたことがわかりました。

  1. 私のファイルBは実際には24個のファイルの1つです。同じファイルB1を1000回開き、次にB2を1000回開くのではなく、ファイルB1を1回開き、閉じ、B2を1回、閉じるなどします。これにより、数千回のfopen操作fcloseが約24回に減ります。

  2. 以前rewind()はファイルポインタをリセットしていました。

これにより、速度が約60倍向上しましたが、これで十分です。を指摘していただきありがとうございますrewind()