2012年4月1日日曜日

mbedのヒープ領域を使い切る。

mbedのC++でヒープ領域とスタックを使い切るテスト。
たぶん、スタックポインタを知るにはもっといい方法があるのだろうけど、ローカル変数のアドレスを見ています。

EthernetNetIfのライブラリーは便利で簡単にインターネット接続のプログラムが作れるがメモリー使用量が多くて、
STLコンテナを多用していたら突然動かなくなった。原因を探ったらヒープ領域を使い切っていた。
#include "mbed.h"
#include 

void no_memory () {
  cerr << "Failed to allocate memory!" << endl;
  exit (1);
}
 
void proc() {
    wait(1);
    char buf[256];
    char* p = new char [256];
    cout << hex << (int)p << "," << (int)buf << endl;
    proc(); 
}

int main() {
    set_new_handler(no_memory);
    cout << "-heap---,-stack--" << endl;
    proc();
}
---

0 件のコメント: