問題タブ [crt]

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 投票する
1 に答える
1295 参照

windows - プロセスの起動中に追加のワーカー スレッドが作成されるのはなぜですか?

私は単純な Windows コンソール アプリケーションを実行しています:- コントロールがメインに来ると、スタックをダンプしました--

_ メインスレッドのスタック:

__

起動時にこれが表示されるのはなぜですか??:

スタック:

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

c++ - 標準ライブラリ呼び出しからの構造化例外 (SE)

::fgetpos を呼び出すコードがあり、キャッチできないカーネル例外が発生します (私の VS 2008 プロジェクトにはオプション /ehs があります)。しかし、標準ライブラリ ルーチンがこの種の例外をスローする べきではないと思わずにはいられません。

update : ::fgetpos(0, &foo) を呼び出してみましたが、これは明らかに間違っていて、実際にカーネル レベルの例外を受け取りました。私は困惑しています。C++ 標準ライブラリが最も基本的な引数チェック (null ポインターのチェック) を実行せず、std::invalid_argument を発生させないのはなぜですか?

そのような基本的なチェックを実行する標準ライブラリルーチンはありますか?それとも、それらはすべて喜んでプログラムを終了させますか?

0 投票する
0 に答える
364 参照

visual-studio-2008 - VS2008 で生成された dll は、CRT アセンブリの 2 つの異なるバージョンに依存しています。

私の VS2008 プロジェクトは、dll を生成し、他の 2 つの静的ライブラリにリンクします。生成されたマニフェストは次のとおりです。

したがって、私の dll は CRT アセンブリの 2 つの異なるバージョンに依存しています。この二重依存の原因を知り、これを修正するにはどうすればよいですか? vc9.0 のデフォルトの動作であるため、dll を元のバージョンのアセンブリにバインドしたいと考えています。

私のコードには、特定のアセンブリ バージョンにバインドすることを示す定義が含まれていません。

また

ここのmsdn Webサイトで説明されているように

0 投票する
2 に答える
1099 参照

c++ - 1 つのファイルに対する 2 つの C FILE* ストリームの一貫性

ネットワーク ソケットから大量のデータを取得するための単純な「ディスクへのスピル」レイヤーを実装する必要があります。2 つの CFILE*ストリームが必要でした。1 つはファイルに書き込むバックグラウンド スレッドで使用され、もう 1 つはそれを読み取るフロント エンド スレッドで使用されます。

2 つのストリームは、ロックを取得して他のスレッドをブロックすることなく、一方のスレッドが一方のオフセットで書き込みを行い、他方のスレッドが別の場所で読み取りを行うことができるようにするためのものです。

ページング メカニズムがあるため、読み取り/書き込みはランダム アクセスの場所で行われます (必ずしもシーケンシャルである必要はありません)。

もう 1 つの注意点として、これは Windows と Linux で動作する必要があります。

質問: 最初のストリームへの fwrite が返された後、書き込まれたデータが 2 番目のストリームの fread にすぐに見えることが保証されますか?

そうでない場合、他にどのようなオプションを検討できますか?


そのため、Posix の pread/pwrite 関数が必要であることがわかりました。Win32 のバージョンは次のとおりです。

(そして、これに関する意見を寄せてくれた皆さんに感謝します-非常に感謝しています)。

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

c++ - CRTの_purecallの実装をオーバーライドする

私は現在、閉じた作業中のプロジェクトの拡張機能であるDLLに取り組んでいます。

純粋な呼び出しのバグをすべてキャッチしたいので、グーグルで検索して_purecallハンドラーについて調べました。私の質問はそれの実装についてです。舞台裏で何が起こっているのですか?コンパイラ自体がハンドラー関数アドレス(定義した場合)を取得し、クラス関数アドレス自体(初期化後)によってオーバーライドされる前に、vテーブルの各行にデフォルト値を書き込みます。 CRTとグローバルポインタ?

もちろん、プラグインDLLがアプリケーションの_purecallハンドラー全体を上書きしたくないので、これを求めています。purecallハンドラーがモジュール内のpurecallのみを処理することを確認できますか?

ありがとう!

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

c# - System.IO.FileおよびデフォルトストリームのC関数に渡されるFILE*ハンドルを取得します

C#アプリケーション内で古いCライブラリ(DLLとして構築)を使用しています。このライブラリの関数の1つは、FILE*(ANSI Cで定義されているように)渡される必要があります。System.IO.FilestdoutおよびのFILE *ハンドルをC#で取得する方法はありstderrますか?

または、この問題、アイデア、ヒントなどを回避する方法はありますか?

前もって感謝します。

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

c - Cでの変数引数の受け渡し

古典的なCで変数引数がどのように渡されるか知っている人はいますか?今日はいくつかのデバッグを行いましたが、ほとんどの通常の引数はスタックを介して渡されます。ただし、これは可変引数には当てはまらないようです。それらのパラメータは定数文字列のように別の場所に保存されていますか?

前もって感謝します!

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

c++ - Visual C ++:ヒープサイズを制限することは可能ですか?

デバッグしているアプリケーションに問題があります。定常状態のメモリ使用量は数百メガバイトです。時折(数時間後)、メモリ使用量が数ギガバイトに急増する状態になります。これが発生したらすぐにプログラムを停止できるようにしたいと思います。

制御が自分のコードを通過する場合、次のようなコードで過剰なメモリ使用をトラップできます。

適切なポイントでワーキングセットのサイズをテストする必要があるため、これは役に立ちません。私は本当にプログラムが最初に壊れるmallocnew、ワーキングセットまたはヒープサイズがいくつかのしきい値を超えてしまうことを望んでいます。そして理想的には、ライブラリは膨大な数の小さなブロックを割り当てるのが好きなので、最小限のオーバーヘッドでCRTヒープ自体によってこれを実行したいと思います。

疑わしいコードは、呼び出し元のコードによって作成されたスレッドで実行されているDLLにあります。DLLはCRTに静的にリンクし、特別なヒープ管理はありません。DLLのソースコードがあります。

何か案は?明らかな何かが欠けていますか?