longjmp

    32

    3答えて

    linux/gccのC++でlongjmpとsetjmpを使うのは安全ですか? (私は効果のlongjmp/setjmp関数は、標準の例外処理になりますどのような側面を知りたい。longjmpの/ setjmp関数を使用して例外処理を実装していないよ)例外処理 *thisポインタ シグナル スマートポインタ(ブーストの共有ポインタと侵入ポインタ) あなたが考えることができる他の何か。

    2

    1答えて

    C++でビルドされたCコードベースで警告レベルを上げようとしています。私はVisual Studioに何らかの理由でショットを与えています。 関連するデストラクタが表示されていないにもかかわらず、setjmpのやり取りに関する警告を受けました。私は、テストをしました: #include <setjmp.h> struct X { int y; }; int main() { st

    1

    2答えて

    i386を例として考えてみましょう。しかし、類似の質問は他のアーチにも当てはまります。伝統的なi386 jmp_bufはsetjmpによって保存され、ebx,esi,edi,ebp,espおよびeipの6つの保存されたレジスタで構成されています。これらのうち、最初の4つはABIごとに呼び出し元によって保存されているため、setjmpという関数はそれ自身の保存された値で上書きされます(setjmpの

    2

    1答えて

    OS Xの.kextファイルには、longjmp/setjmpが必要です。残念ながら、XNUにこれらの機能が正式にサポートされているとは思えません。これがうまくいかない、または今実装されていない根本的な理由はありますか? どのように私はこれを動作させることができる任意のアイデア? OS XカーネルでLuaを実行しようとしていますが、ランタイムはlongjmp/setjmpまたはC++例外のいずれか

    7

    2答えて

    g ++ 4.8.3のバグがいくつか発生したと私は確信していますが、 setjmp/longjmp。私は、次のfoo.cxxに問題の私のコードを単純化しています #include <setjmp.h> #include <string.h> // Changing MyStruct to be just a single int makes the compiler happy. stru

    2

    1答えて

    私はちょうどLeon Timmermansの記事What you should know about signal based timeoutsを読んできましたが、それはSys::SigAction::timeout_call()の使用にどのように適用されるのか不思議でした。 1)まず、timeout_call()はlongjmpと危険な信号を使用していると思われますので、CERT Secure

    0

    1答えて

    通常、setjmpとlongjmpは呼び出しスタックを気にしません。代わりに関数はレジスタの保存と復元だけです。私はそのコールスタックを保存し、別の実行コンテキスト EnableFeature(bool bEnable) { if(bEnable) { if(setjmp(jmpBuf) == 0) { backup call stack } els

    12

    2答えて

    私は再帰を検出したい、つまりその関数が直接的または間接的に呼び出されたかどうかを調べる特定の関数(シグナルハンドラ)を持っています。面倒なことに、関数はある時点では制御できないコードを呼び出し、そのコードは何かを行うことができます。 通常、私はちょうど void foo() { static int recursed = 0; if(recursed) { ...

    1

    1答えて

    Nick Gammon's Regexp libraryを使用しているときにこのエラーが発生します。 libraries/Regexp/Regexp.cpp.o:(.text._ZL5errorc+0x4): undefined reference to `longjmp' libraries/Regexp/Regexp.cpp.o: In function `error': /Users