タグ

c++に関するreplicationのブックマーク (79)

  • 大容量ファイルI/Oの効率について - TrickDiary

    数百GiBクラス以上のボリュームのデータを処理してると極端にパフォーマンスが落ちちゃう問題だけど、原因の一つは、どうも大容量ファイルI/Oの場合にはファイルマッピングだと効率が悪いことにある模様(環境やその他の条件にもよるのかもしれないけど)。推測の域をでないけど、メモリアロケートを伴う MapViewOfFile()/MapViewOfFileEx(), UnmapViewOfFile() を繰り返し何度も呼び出すことで、致命的なメモリの断片化でも発生してるくさい。自前で用意したリングバッファ(ring_bufferクラス)に ReadFile() でデータを読み込むようにしたら 100GiB のファイルの読み込みで1割程度高速化できた。 あと別の原因では、数百GiBクラスのファイルになっちゃうと、ディスク上に記録されている位置の違いからか、フラグメントを起こして無くても単純に同じ量のア

    大容量ファイルI/Oの効率について - TrickDiary
    replication
    replication 2020/09/05
    MapViewOfFile()/MapViewOfFileEx(), UnmapViewOfFile() を繰り返し何度も呼び出すことで、致命的なメモリの断片化でも発生してるくさい。
  • 警告 C28251 'WinMain' に対する整合性のない注釈: - のねのBlog

    警告 C28251 'WinMain' に対する整合性のない注釈: このインスタンスには 注釈なし が含まれます。 c:\program files (x86)\windows kits\10\include\10.0.17134.0\um\winbase.h(912) を参照してください。int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )WinMainをwWinMainへ変えた。 int APIENTRY wWinMain( _In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nShowCmd )blog.goo.

    警告 C28251 'WinMain' に対する整合性のない注釈: - のねのBlog
  • WIn32API Windowsサービスの状態を取得する QueryServiceStatus - s-kita’s blog

    Windowsサービスの状態を取得するには、QueryServiceStatus関数を用いる。 QueryServiceStatus関数のプロトタイプは以下のとおり BOOL QueryServiceStatus( SC_HANDLE hService, // サービスのハンドル LPSERVICE_STATUS lpServiceStatus // サービスのステータス ); QueryServiceStatus関数の第二引数の型であるSERVICE_STATUS構造体は、WinSvc.h にて以下のように宣言されている。 typedef struct _SERVICE_STATUS { DWORD dwServiceType; DWORD dwCurrentState; DWORD dwControlsAccepted; DWORD dwWin32ExitCode; DWORD dwS

    WIn32API Windowsサービスの状態を取得する QueryServiceStatus - s-kita’s blog
  • C++のマングルとextern "C" { - wagavulin's blog

    C++とCが混在したプログラムを書くとときどき定義したはずの関数がundefinedだと言われることがある。そんなときの対処法とマングルの話。 その前にまずはC言語だけの場合を考える。例えば以下のようなCのプログラムを書いてみる。 /* main.c */ #include "foo.h" int main(){ func1(); return 0; } /* foo.h */ #ifndef FOO_H void func1(); #endif /* foo.c */ #include "foo.h" #include <stdio.h> void func1(){ puts("ok"); } 見てのとおり、main.cはfunc1関数を呼び出しており、foo.cはfunc1関数を定義している。当然、main.cをコンパイルしてできたmain.oもfunc1を参照し、foo.cをコンパイ

    C++のマングルとextern "C" { - wagavulin's blog
  • 【C/C++】OSのバージョン取得 - 流れるまにまに

    VS2015でとあるアプリを作成してた時、 最初のチェックでOSがXP以外をはじく処理が必要でした。 気にせずいつも通りGetVersionExを使用したら、警告が。。。 1>hoge.cpp(57): warning C4996: 'GetVersionExW': が古い形式として宣言されました。 1> c:\program files (x86)\windows kits\8.1\include\um\sysinfoapi.h(442): note: 'GetVersionExW' の宣言を確認してください だそうです。 解決法として、「"VersionHelpers.h" に定義されたAPIを使ってくれ」とのこと。 但し、Visual Studio 2013若しくはWindows SDK 8.1にしか上記のヘッダファイルが入っていないと。 なんと不親切な(´・ω・`) 最悪 #pra

    【C/C++】OSのバージョン取得 - 流れるまにまに
  • [VisualStudio]C++でもXMLドキュメントコメントを自動挿入したい!! | なうびるどいんぐ

    結論から言ってしまえば、拡張機能を入れる事なのですが、それだけではつまらないので色々オマケ解説もしましょう。 正式名称が良く分からないので、ここではこの様なコメントを全てまとめて「ドキュメントコメント」と呼ぶ事にしましょう。 例えば、C#(と言うよりVisualStudio?)では以下の様なXML形式のコメントを記入する事によってドキュメントコメントを利用出来ます。 /// <summary> /// ほげぇ!! /// </summary> /// <param name="str">文字列(はぁと</param> /// <returns>数値(すぅぱぁはぁと</returns> private int hoge(String str) { return 114514; } これを入れておくと、関数名にマウスカーソルを重ねた際に説明が表示され、関数呼び出しの際に引数の説明が表示されます

    [VisualStudio]C++でもXMLドキュメントコメントを自動挿入したい!! | なうびるどいんぐ
  • TLS 1.3 and the Future of Cryptographic Protocols

    Polaris 統合型 SaaS アプリケーション・セキュリティおよびリスク管理プラットフォーム Signal 新着 AIを活用したソフトウェア開発向けエージェント型アプリケーションセキュリティ Coverity 静的解析 Black Duck ソフトウェア・コンポジション解析 Continuous Dynamic Webアプリ向けDAST Seeker インタラクティブ・アプリケーション・セキュリティ・テスト Defensics プロトコル・ファジング Software Risk Manager アプリケーション・セキュリティ態勢管理

  • メモリの二重解放回避テク - akihiko’s tech note

    メモリの二重解放とは, new などで確保したメモリ領域(ヒープ領域)を2回 delete などで解放することを言う. new と delete をきちんと対応させて書いていないときに起こる問題だ.特にクラスのメンバに動的確保したメモリへのポインタを含む場合にやってしまいがちである.ここでは二重解放によって発生する問題を解説する. 結論から言うと,メモリを解放した後 (delete p1;),ほかの用途でメモリを確保し (p2=new T;),たまたまそれが解放したメモリと同じアドレスに割り当てられてしまった場合 (p1==p2),最初のメモリを二重解放すると (delete p1;),新しく確保したメモリ (p2) が解放されてしまう.この結果,新しく確保したメモリにアクセスすると値が書き換えられていたり,セグメンテーションフォルトが発生する場合がある.プログラマはまず,新しく確保したメ

    メモリの二重解放回避テク - akihiko’s tech note
  • C言語 入出力バッファリングの設定 - stdio.h - [ setbuf, setvbuf ] | 勇躍のゴミ箱

    C言語 目的別 画面への文字出力 画面へ1文字単位で出力 画面へ1行単位で出力 画面へ書式付きで出力 可変個引数を書式付き表示 キーボードから文字入力 入力を1文字単位で取得 入力を1行単位で取得 入力を書式付きで取得 ストリームに1文字戻す 文字列データの入出力 文字列から書式付きで取得 文字列へ書式付きで出力 可変個引数を書式付き出力 ファイルオープン ファイルを開く ファイルを閉じる ファイルオープンのモード 標準入出力について ファイルの読み込み テキストファイルの読込 空白区切りファイルの読込 CSVファイルの読込 バイナリファイルの読込 ファイルの書き込み テキストファイルの書込 CSVファイルの書込 バイナリファイルの書込 可変個引数をファイルへ書込 ファイル関連 ファイル位置の取得 ファイル位置の設定 ファイル位置の取得2 ファイル位置の設定2 ファイル位置を先頭に戻す フ

  • C/C++ におけるデータ入力の速度 - やた@はてな日記

    100 万行のテキストファイル(test-data)を C/C++ で作成したプログラムで読み込むとき,どのくらいの時間がかかるかを調べた結果です. データ入力がボトルネックになるような状況では,std::fgets(), std::fread(), std::istream::read() を使った方が良さそうです.std::istream については特に極端な差が出ていますので,速度面を重視する場合,便利なインタフェースを封印しないとダメっぽいです.実に惜しい…. 追記(2010-07-28):id:metaboles さんより,std::ios::sync_with_stdio(false) を使えば std::cin.getline() や std::getline() も std::fgets() と同じくらい速くなるというコメントをいただきました(後述). $ wc test-

    C/C++ におけるデータ入力の速度 - やた@はてな日記
  • メモリリークの自動検出をしてみる - 閑古鳥

    VC++ のライブラリにはメモリリークの検出機能があります。関数ひとつ呼んでおくだけでアプリケーション終了時にメモリの解放漏れを出力ウィンドウに表示してくれるという便利なものなのですが、実際にこれを使うまでの過程に罠が多いのでメモしておきます。長すぎて我ながらわけがわからないので、興味のある方は最後の参考サイトだけ読んだらいいと思います。 使い方 普通に使う分には簡単です。 stdafx.h の末尾*1に : #if _DEBUG #define _CRTDBG_MAP_ALLOC #include <crtdbg.h> #define new new(_NORMAL_BLOCK, __FILE__, __LINE__) #endif と記述し、main 関数 (MFC であれば CWinApp::InitInstanceとか) 内部で ::_CrtSetDbgFlag(_CRTDBG_L

    メモリリークの自動検出をしてみる - 閑古鳥
  • ハンドルリーク - you-sskの日記

    ハンドルリークしていたとき、どんなハンドルがリークしたのかお手軽に調べたいなと。 windbg使っていれば !htrace -enable しておいて、アプリケーションを操作してハンドルが増えたところで、ブレークして !htrace -diff とするとハンドルとそのハンドルが作られたコールスタックが表示される。 ヘルプには !htrace -enable [Max_Traces] と書いてあるけれど、WindowsXPでは記録されるコールスタックの深さが変えられないみたい。 もうひとつはProcessExplorerでCtrl+LでShow Lower PaneしてCtrl+Hでハンドルを表示させておいて、Ctrl+Aでファイルに保存。アプリケーションを操作してハンドルが増えたら、もう一度別のファイルに保存して、その二つのファイルをdiffするのもいいかな。

    ハンドルリーク - you-sskの日記
  • GetLastError()の間違った使い方…。 - とあるMetaTraderの備忘秘録

    先日リクエストを頂いた、GetLastError()の件ですが、忘れないうちに説明しておきたいと思います。 まずは、とあるEAにあったGetLastError()の間違った使い方のサンプルから。 #include // ←エラーコードをメッセージとして表示するErrorDescription を使う時必要になる。 // void subCheckError(int ticket, string Type) { if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print(Type + " order opened : ",OrderOpenPrice()); } else Print("Error opening " + Type + " order : (",GetLastError(),") ", E

    GetLastError()の間違った使い方…。 - とあるMetaTraderの備忘秘録
  • LoadLibrary が 14001 を返す問題 - Windows 2000 Blog

  • [C/C++]なんとエラーメッセージが取得出来た

    WIN32APIで処理に失敗した後にGetLastError()を使いなさいとは、リファレンスに書かれていたので知っていたのですが、数字(ID)だけ見ても何もわかんねーYO!!と思っていました。 今日たまたま知ったのですが、GetLastError()で取得したIDからエラーメッセージを取得する方法があったみたいで早速使ってみました。 static inline void OutputMessage(DWORD dwMessageId) { LPTSTR lpBuffer = NULL; FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(), LANG_USER_DEFAULT, (LPTSTR)&lpBuffer, 0, NULL ); Message

  • スレッド

    スレッドと排他処理とデッドロック キーワード: スレッド、Mutex、デッドロック、pthread 1 プロセスとスレッド 「プロセス」とは実行中のひとつのプログラムの事であり、マルチタスクOSでは異なるプロセスに対してメモリ空間は 別々に割り当てられる。異なるプロセス間では互いのメモリ空間にアクセスすることは基的に出来ない。 一方、「スレッド」とは一つのプロセス内部で別々に独立して実行される実行単位の事であり、 メモリ空間は各スレッド間で共通となる。通常はプロセスを起動するとスレッドが一つだけ起動 して(これをメインスレッドと呼ぶ) main() 関数に書かれたプログラムが実行される。 なおスレッドの起動方法はOSや言語などの環境によって多少異なる。今回は C言語 と pthread ライブラリを用いてスレッドの学習を行うが、スレッドの基的な使いかたは環境が異なっても ほぼ共通である

  • VS2013 C++でのMFCのコンパイルやXP向けコンパイル : 早起き、いいことあるかも?

    2014年01月10日01:50 カテゴリPC関連VisualStudio2013 VS2013 C++でのMFCのコンパイルやXP向けコンパイル Visual Studio 2013 において Visual Studio C++ 2013 では、MFCのMBCS版が非推奨となり、インストーラに同梱されなくなった。 だが、同梱されなくなっただけで、Microsoftから無料ダウンロードで取得が可能。 インストールしたら、コンパイルが完了した。 ダウンロードはここ。「Visual Studio 2013 のマルチバイト MFC ライブラリ」 http://www.microsoft.com/ja-jp/download/details.aspx?id=40770 そのときのコンパイルエラーメッセージ error MSB8031: Building an MFC project for a n

    VS2013 C++でのMFCのコンパイルやXP向けコンパイル : 早起き、いいことあるかも?
  • サイドバイサイド構成が正しくないエラーは依存モジュールのバージョン確認で解消 - ぴよログ

    この間はリンクしたライブラリの影響で起動できない問題があったが、今度はもらった実行ファイルが動かないという問題が起きた。 ちなみに以前のはこちら。 VS2005 アプリケーション構成が正しくない - PILOG 今回はもらった実行ファイルを動かそうとしたら「サイドバイサイド構成が正しくないうんぬん」という、これまた同じエラーでそこそこよく見るものが出てしまった。 このエラーは詳細な情報を見ることができる。 そのためには管理ツールというものを起動する必要がある。エクスプローラとかにあるコンピュータ(またはPCなど)となっているところを右クリックすると「管理」というメニューが出てくる。 これをクリックすると次のような管理ツールが開く。 左側のツリーから「コンピュータの管理」→「システムツール」→「イベントビューアー」→「Windowsログ」→「Application」と辿ることでさきほどのエラ

    サイドバイサイド構成が正しくないエラーは依存モジュールのバージョン確認で解消 - ぴよログ
  • expressweb.jp

    This domain may be for sale!

  • プログラミング/C,C++,C - 土用の丑

    Visual Studio 全般† 矩形選択  参考:VS 2010での矩形選択と複数行編集 コード・エディタで[Alt]キーを押しながらマウスでテキストの範囲を選択すると矩形範囲を選択できます。 ↑ メニューにビルドを表示する† デフォルト設定だとリビルドがない。 http://pc12.2ch.net/test/read.cgi/tech/1271785339/791 791 名前:デフォルトの名無しさん[sage] 投稿日:2010/04/29(木) 21:11:20 ツール-設定-上級者設定に変えるといろいろメニューに出てくる。 799 名前:デフォルトの名無しさん[sage] 投稿日:2010/04/29(木) 21:56:44 >>791 おおお、いろいろ出てきた。いつもどおりのメニューになったよ。ありがとう。 リビルドを隠すとかいったい誰得のオプションなんだろ。 ↑