C/C++
Visual Studio C++でC++のプロジェクトをビルドして、LNK2019 未解決の外部シンボル _main が関数~~というエラーが出る場合はエントリポイントがWinMain()ではなくmain()になっています。 プロジェクトのプロパティ → リンク → システム → サブシステムで…
メモリ解放後、無効なアドレスを指しているポインタのことを「ダングリングポインタ」と一般的には呼ぶらしいです。 ダングリングポインタにアクセスするとどうなるの??という感じだったので調べてみました。 環境はMicrosoft Visual Studio Community 201…
newの挙動について最近勉強していました。 newしたとき、自分が割り当てた変数以外の様々な値が変更されており???となっていたのですが、 teratailで質問してみたところ、複数の方々より、newの挙動についてご教授頂きました(多謝)。 C++ - newしたときに…
バッファオーバーフローとは??という感じだったので理解を深めるために、スタックベースのバッファオーバーフローを実際に発生させてみて、その様子をVisual Studioのメモリウィンドウで見てみます。 バッファオーバーフローを発生させるC++のソースコード…
クラスのメンバ変数の知識があやふやだったので、下のようなソースコードを書いて実験してみました。 aaa.cpp #include <iostream> using namespace std; class A { public: A() { cout << "A::A()" << endl; } ~A() { cout << "A::~A()" << endl; } }; class B { publ</iostream>…
いろんなサイトを見てみてましたが、MSDNの下記サイトの解説が一番シンプルで分かりやすく感じました。 チュートリアル: ダイナミック リンク ライブラリの作成と使用 (C++) サイトの解説通り行うことで、1つのソリューションにDLLのプロジェクトとDLLを使う…
C++でシリアライズを使ったコードを書いたことがなかったので、勉強のためにboost::serializationを使ってみました。 環境構築 Macを使っており、boostはbrew で brew install boost で入れることができました(入れたの自体は大分前です)。 ~/.bash_profile …
luaはMacでbrewがあればbrew install luaで入ります。環境構築が非常に楽で良いですね。 注意点としてはCだと<lua.h>、C++だと<lua.hpp>をインクルードしないとビルドできません。 main.cpp #include <lua.hpp> #include <lauxlib.h> #include <lualib.h> int main() { lua_State *lua = luaL_newstate(); l</lualib.h></lauxlib.h></lua.hpp></lua.hpp></lua.h>…
静的ライブラリについて勉強するぞ!となり、グーグル先生で調べて出てきた以下のページを見ながらMacで静的ライブラリを作ってリンクして実行ファイルを作るまでを試してみました。 qiita.com しかし、ライブラリをリンクする段階で詰まりました。 出たエラ…
C++でjsonを扱うコードをろくに書いたことがなくて知識的に不安だったので、ぐーぐる先生で調べて出てきたjsoncppというossを使ってjsonのファイルをパースして表示してみました。 github.com 内容 test.json {"name" : "nemumitakamaru","email" : "nemumit…