Visual Studio 2003 が出てきた

家の中を整理していたら、Visual Studio 2003 が出てきました。20年前と今日の C++ を比較するとまったく別の言語というほど違っている気がします。

一番大きく進化した点はメモリ管理ではないかと思います。20年前は new, delete または Windows の場合は HeapAlloc, HeapFree でヒープメモリを管理していたものですが、現在は shared_ptr, unique_ptr で管理するようになりました。C++11 の頃は配列操作ができませんでしたが、C++17 辺りから配列操作にも対応しています。

#include <memory>
#include <string>

struct Chunk {
    std::wstring content;
    int content_type;
};

void work() {
  auto chunk_arrptr<Chunk[]> = std::make_shared<Chunk[]>(3);
  Chunk &c0 = chunk_arrptr[0];
  ...
}

と言いつつ、手軽な new, delete をまだ使ったりしてしまいますが。

一方で、ソケット関係は色々出てきましたが、結局 Winsock に戻ってしまっている気がします。

あるプロジェクトのために TLS を扱うためのコードを探していたのですが、Visual Studio 2022 でまともに動いたのは Winsock を直叩きするプログラムだけでした。UNIX 系 OS と違い、Winsock はファイルディスクリプタとは異なるため、バッファ入出力が必要な場合(そしてそのようなケースがほとんどです)は自作する必要があります。

昔の Winsock はバッファサイズが100バイトあまりしかなくて、非常に実行効率が悪かったのですが、今の Winsock はどうなんでしょうか?

投稿者について
みのしす

小さいときは科学者になろうとしたのに、その時にたまたま身に着けたプログラミングで未だに飯を食っているしがないおじさんです。(年齢的にはもうすぐおじいさん)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です