タグ

c++に関するembeddedのブックマーク (20)

  • いやなブログ - RAII と setjmp/longjmp

    RAII と setjmp/longjmp C++ には RAII (Resource Acquisition Is Initialization) というイディオムがあります。これはリソースの開放を確実に行うためのテクニックとして C++ のプログラムで広く用いられています。しかし、RAII も setjmp/longjmp という落とし穴があります。 RAIIの基 次のプログラムはメモリリークを起こします。 #include <string> using namespace std; int main() { string *p = new string; return 0; } このプログラムをビルドして valgrind でテストすると次のようなエラーメッセージが表示されます。4バイトのメモリリークが検出されました。 % g++ test.cc % valgrind ./a.ou

    embedded
    embedded 2014/02/20
    C++「物凄い勢いで RAII と setjmp/longjmpの落とし穴にはまるプログラマのムービー」
  • C++ で longjmp() 関数を使ってはならない - masugata_kの日記

    longjmp() 関数を使うと C でも例外処理っぽいことができるわけだが、これは、間違っても C++ プログラム中では使ってはならない。まあ、C++ には物の例外処理があるので使うわけもないのだが、C との混合プログラミング*1の際などには注意を要する。 問題は、longjmp() の呼び出しによって消滅するスタック上のオブジェクトのデストラクタが呼ばれない、ということだ。例外送出に伴うスタック巻き戻しではスタック上のオブジェクトが解体されるが、longjmp() にはこれがない。いや、デストラクタが呼び出されないどころか、そもそもそういう事態での C++ プログラムの挙動は不定である: C++ 標準*2 ― 18.7 の 4 The function signature longjmp(jmp_buf jbuf, int val) has more restricted behav

    C++ で longjmp() 関数を使ってはならない - masugata_kの日記
    embedded
    embedded 2014/02/20
    「longjmp() の呼び出しの結果として消滅するスタックにデストラクタが呼び出されるようなオブジェクトがあったら、プログラムの動作がどうなるかは分からないよ」なんでC++の標準ヘッダに<csetjmp>があるんだろ。
  • Super Technique 講座~longjmpと例外

    プログラムの流れを制御する手段として、いわゆる「構造化構文(for とか if とか)」、悪名高い「goto 文」などがあるのは周知のことだが、かなり特殊なものとして、「setjmp, longjmp」による「非ローカル分岐」と呼ばれるものがある。この「非ローカル分岐」は「非ローカル」と言うだけあって、ある関数の中から、別な関数に制御を移すことができたりする。まあ、そのために乱用すべきではなく、注意して使わなくてはならないライブラリ関数なのだが、実はこれは JavaC++ で言語の上で実装されている「例外」の基礎となるものである。だから、まずこの標準ライブラリ関数「setjmp, longjmp」について解説しよう。 → Java 講座の「例外」 setjmp, longjmp とは どうやって実現してるの? setjmp/longjmp の利用例~インタプリタ 補追1:setjmp

    embedded
    embedded 2014/02/20
    setjmp/longjmpの話。
  • スレッドセーフという幻想と現実 - yohhoyの日記(別館)

    この記事はC++ Advent Calendar 2013の15日目にエントリしています。 内容はC++標準ライブラリとスレッドセーフに関する解説になります。 flickr / rennasverden もくじ What's スレッドセーフ? スレッドセーフという幻想 基型とデータ競合 C++標準ライブラリとデータ競合 C++標準ライブラリ:シーケンスコンテナ編 C++標準ライブラリ:連想コンテナ編 スレッドセーフ RELOADED 基的なスレッドセーフ保証 std::shared_ptr<T> std::rand() std::cout (文のみ約9000字) はじめに マルチスレッド対応の点では他言語に遅れを取っていたプログラミング言語C++ですが、C++11ではようやく標準ライブラリにスレッドサポートが追加されました。C++11スレッドサポートではスレッドクラスstd::thr

    スレッドセーフという幻想と現実 - yohhoyの日記(別館)
    embedded
    embedded 2013/12/16
    C++標準ライブラリとスレッドセーフに関する解説
  • ゲーム開発者のための C++11/C++14

    分散システムのFault Injectionの話 NTTデータテクノロジーカンファレンス2017で発表する際に用いたプレゼン資料 https://oss.nttdata.com/hadoop/event/201710/index.html Agenda: In this session, Shmulik Ladkani discusses the kernel's net_device abstraction, its interfaces, and how net-devices interact with the network stack. The talk covers many of the software network devices that exist in the Linux kernel, the functionalities they provide and s

    ゲーム開発者のための C++11/C++14
    embedded
    embedded 2013/09/17
    C++11の新機能の使いどころがよくわかる
  • Cling

    What is Cling Cling is an interactive C++ interpreter, built on the top of LLVM and Clang libraries. Its advantages over the standard interpreters are that it has command line prompt and uses just-in-time (JIT) compiler for compilation. Many of the developers (e.g. Mono in their project called CSharpRepl) of such kind of software applications name them interactive compilers. One of Cling’s main go

    Cling
    embedded
    embedded 2013/03/05
    C++の対話的なインタプリタ。clangでパースしてllvmでJIT。
  • BOOT_COMPLETEDが受信出来ない - Google グループ

    embedded
    embedded 2013/02/15
    Goldfish emulator kernel project
  • CrystaX

    How to build You can also build your own distribution if you don't want to use my prebuilt versions. To do it, follow instructions below. Required development tools: For Windows, a recent release of Cygwin is required GNU Make 3.81 or later GNU Makeinfo (most recent version) GIT (for downloading toolchain sources) Most recent GNU Libtool packages (automake, autoconf etc) GNU C/C++ 3.x or later (fo

  • C++編(標準ライブラリ)●Programing Place

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • http://lamoo.s53.xrea.com/develop/stdcpp/stlport.html

  • Standard Template Library プログラミング on the Web

    1985年、AT&TのBjarne StroustrupがC++をこの世に送り出しました。その後C++は様々な拡張を繰り返しながら進化してきました。 1991年、ISOはC++の国際標準(standard C++)を定める作業を開始しました。標準C++の最終草案は1997年にISO C++標準化委員会に承認されました。 標準C++が規定するのは言語仕様だけなく、C++標準ライブラリも規格の中で明確に定められています。それまでC++のライブラリといえばiostreamぐらいのものでしたし、それもあくまで"事実上の標準"でしかありませんでした。 そしてそのC++標準ライブラリの一部として組み入れられたのがSTL(Standard Template Library)です。すなわちSTLは標準C++の仕様の一部ということです。 僕がSTLを知ったのは1995年、いくつかのコンパイラがtemplat

  • STL超入門

    Last update 1999/08/07 STL超入門 (C)平山直之 無断転載は禁止、リンクはフリー 誤字脱字の指摘は歓迎 はじめに STLの知名度が意外と低いので、啓蒙のためにSTL入門を書くことにします。普段双方向リンクリストや動的配列のコードを書くのに飽きている人は、読んでみてください。絶対使ったほうがラクですから。 こんな人が対象 STLはC++の「テンプレート」という機能を使っていますので、普段C/C++コンパイラをCコンパイラとして使ってる人も、C++コンパイラとして使わなければなりません。STLをただ使うだけなら大して難しくはないので、C++をbetter Cとして使うのもよいかと思います。これ以後もそのような前提で説明します。よく分からないことがあったら掲示板で質問してください。 ※要するにCが解っている人向け※ STLの目的 STLとは、動的配列や双方向リンクリスト

  • C++ Portability Guide - MDC

    What follows is a set of rules, guidelines, and tips that we have found to be useful in making C++ code portable across many machines and compilers. This information is the result of porting large amounts of code across about 25 different machines, and at least a dozen different C++ compilers. Some of these things will frustrate you and make you want to throw your hands up and say, "well, that's j

    embedded
    embedded 2009/06/06
  • 変電工 - Google C++スタイルガイド日本語訳

    embedded
    embedded 2009/06/06
  • GCC Frequently Asked Questions - GNU Project

    This FAQ tries to answer specific questions concerning GCC. For general information regarding C, C++, and Fortran respectively, please check the comp.lang.c FAQ and the C++ FAQ. Other GCC-related FAQs: libstdc++-v3. General information How do I get a bug fixed or a feature added? Does GCC work on my platform? Installation How to install multiple versions of GCC Dynamic linker is unable to find GCC

  • C++ Style Guide

    Benjy Weinberger Craig Silverstein Gregory Eitzmann Mark Mentovai Tashana Landray This style guide contains many details that are initially hidden from view. They are marked by the triangle icon, which you see here on your left. Click it now. You should see "Hooray" appear below. Hooray! Now you know you can expand points to get more details. Alternatively, there's an "expand all" at the top o

    embedded
    embedded 2008/06/29
  • ガベージコレクションの実装法と評価

    1.はじめに プログラミング言語とはシステム化する対象物を抽象化し、コンピュータで処理可能なコードを記述するために用いる人工言語である。プログラミング言語はコンピュータの機械語と一対一の対応をもったアセンブラから始まり、コンパイラを用いて機械語に翻訳することを前提としたコンパイラ言語、インタプリタと呼ばれるプログラムがソースコードを解釈し実行するスクリプト言語と、記述できる抽象度を高める方向へと進化してきた。 プログラミング言語はその存在理由から、より抽象度の高い記述が行えること、すばやい開発を行える事が求められる。抽象度の高い記述とは、プログラムがどういう処理を行うか(HOW)ではなく何の処理を行うか(WHAT)を記述しやすい構文、機能を持っていることを、すばやい開発とは記述性の高さ、コードの密度の高さ、バグの発生しにくい構文、機能を持っていることをさす。 この抽象度の高い記述、すばやい

  • distcc

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    distcc
  • Apache C++ Standard Library

    The Apache C++ Standard Library project (code name stdcxx, pronounced "standard C++ library", not S-T-D-C-X-X) is a collection of algorithms, containers, iterators, and other fundamental components of every piece of software, implemented as C++ classes, templates, and functions essential for writing C++ programs. The goal of the Apache C++ Standard Library is to provide a free implementation of th

  • 標準 C ライブラリ・ユーザーズガイド/Rogue Wave Software, Inc.

    Copyright (c) 1998, Rogue Wave Software, Inc. このマニュアルに関する誤りのご指摘やご質問は、電子メールにてお送りください。 OEM リリース, 1998 年 6 月 書は、標準 C++ ライブラリの一般ユーザー向けマニュアルです。標準 C++ ライブラリには、この他に以下のマニュアルがあります。 『標準 C++ ライブラリの入出力とロケール』 『標準 C++ クラスライブラリ・リファレンス』(英語版) このマニュアルには、すべての章タイトルと見出しの第 1 レベルと第 2 レベルが表示される、次の項目があります。目次以下の章のタイトルをクリックすると、目的の章へ直接移動することができます。各章には、章の目次が用意されています。 また、索引 もあります。 第 I 部: はじめに 第 1 章: 概要 第 II 部: 基事項 第 2 章: 反復

  • 1