エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
Rubyの拡張ライブラリを作るときはメモリ確保失敗時に自分でGCしてリトライしなきゃダメという話 - ser1zw's blog
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
Rubyの拡張ライブラリを作るときはメモリ確保失敗時に自分でGCしてリトライしなきゃダメという話 - ser1zw's blog
はじめに 表題のとおりでよく考えれば当たり前なのですが、ちょっとハマったので書いておきます。 要約... はじめに 表題のとおりでよく考えれば当たり前なのですが、ちょっとハマったので書いておきます。 要約すると、Rubyの拡張ライブラリを作る場合、用意されているALLOC()などのメモリ確保マクロを使わないときには、ちゃんと自分でGCを呼ぶ必要がある、という話です。 環境 Ruby 1.9.2p180 (2011-02-18) [i686-linux] 本題 こんなライブラリがあったとして // foo_lib.hpp #include <stdlib.h> typedef struct Foo { double bar[1000000]; } Foo; Foo* create_foo() { Foo* foo = (Foo*)malloc(sizeof(Foo)); if (foo == NULL) throw "<Memory allocation failed>"; return foo