投稿

2022の投稿を表示しています

C言語でRAII

前置き:RAII って?  C++ 言語には RAII; Resource Acquisition is Initialization という考え方があります。これはどういうことでしょうか。 #define ARRY_SZ (5) int32_t p_arry = (int32_t *)malloc(sizeof(int32_t) * ARRY_SZ); p_arry[0] = 1; p_arry[1] = 2; p_arry[2] = 3; p_arry[3] = 4; p_arry[4] = 5; for (size_t idx=0; idx<ARRY_SZ; ++idx) { printf("p_arry[%zu]=%" PRId32 "\n", idx, p_arry[idx]); } よくある、Cでヒープ確保するコードですが、このコード片は free(p_arry) を呼び出し忘れているため、もしかしたらメモリーがリークするかもしれません。また、for 文で値を表示する前に p_arry[n] = n+1; の形式で確保した領域を初期化していますが、ここで初期化を忘れていたらどうでしょう。未初期化の領域を読み出そうとするのは Undefined Behavior なので、鼻から悪魔が出るかもしれません。 #include <cstddef> #include <cstdint> #include <cstdio> #include <cinttypes> #include <new> #include <initializer_list> class HeapArray { private: std::int32_t *values = nullptr; std::size_t size = 0; public: HeapArray() = delete; HeapArray(std::initializer_list<std::int32_t> init) { this->values = new(std::nothrow) std::int32

としぁ Adventしたね Calendar 2022 #toshi_a解凍 22日目

 今度こそ遅刻しないとか思ってたけど普通に遅刻したし特にネタも思い浮かばなかったので、としぁさん初対面の時の思い出でも書きます。 mikutter というものを知ったのは 2010 年かそこらに、Ruby で書かれた Linux でも使えるクライアントがあるらしいことを聞いていたのですが、そのときはたぶん Windows メインの利用者で Ruby はむしろ導入ダルそうだったので、たぶん Tween とか使ってました。 懐しいですね Tween。 そのあと、FreeBSD や Arch Linux とか使い出して mikutter も普段使いしはじめて、TL 大破させられたのは前 https://orumin.blogspot.com/2022/04/toshia-tl-advent-calendar-2022-toshia-6.html に書いたとおり。 そのあと、2014 年、なんやかんやで Google Summer of Code とか参加して、そのネタで syuu1228 先生と一緒に OSC Kansai@Kyoto のブース出したんですよね。 そこでコード書いてたら、いきなりにやにやしながら mikutter シールを束で目の前に叩き付けた人がやってきてですね、そうです、としぁさんと生で会ったはじめてのタイミングでした。 SNS 上の振舞い・発言と裏腹にリアルではすごい真面目な感じで、という人は結構居そうですが、としぁさんリアルでもヤベーよと思って笑ったの覚えています。 なんやかんやでそこから 8 年も経ってるし、OSC Kansai も今は OSC 大阪や OSC 京都になってるんでしたっけ。時間経つの早いですねぇ。

toshi_a に TL 大破されてから8年と4ヶ月経ちました― としぁ Adventしたね Calendar 2022 #toshi_a解凍 6日目(遅刻)

イメージ
前回 前々回 2021年の年始に引越してからこのブログ更新しわすれていたことに気付きました。 え、マジ? 私事ですがそれから今までなんと就労しはじめるなど個人的に大きな変化があったのでそのうちなんか書きます。 本題 Twitter から UserStream が消え mikutter で TL 大破させられ煮え湯を飲まされた @toshi_a も凍結し、ここ何年も toshi_a を青い鳥のタイムラインで見ることはなくなっていました。 凍結したtoshi_a (出典:「1991年、エッツィ(アイスマン)のミイラ化した遺体を調べる登山家のラインホルト・メスナー氏(右)と仲間」、PHOTOGRAPH BY PAUL HANNY, GAMMA-RAPHO/GETTY、NATIONAL GEOGRAPHIC より) しかしなんと4年と数ヶ月ぶりに解凍されたということでこれを記念した toshi_a Advent カレンダーとしての記事がこちらになります。 4/6 担当ですがいつもどおり無事一日遅れました。 タイトル通りですが、toshi_a の凍結は4年前かもしれないですが、toshi_a に TL を大破されたのはなんと8年前なんですね。許さない。 いつまでこのネタひっぱるんだよ、と言われる気がしますが、気にしないことにします。 toshi_aに壊された当時のタイムライン ちょうどあのぐらいから Twitter の人に一部認知されたり、その後ておくれと言われたりするようになったのですが、 わたしはておくれではない 真の元祖ておくれ toshi_a の帰還を歓びましょう! これが言いたかったことです、無事 Twitter に真のておくれが帰ってきたことを思い出しましょう!