![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
いろいろなテクニック.Nucleo と DISCO-F746 用.
Dependencies: Array_Matrix mbed
Diff: MyNew.hpp
- Revision:
- 0:bb939e0bc6e2
- Child:
- 1:bbb9f0c3e523
diff -r 000000000000 -r bb939e0bc6e2 MyNew.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MyNew.hpp Sun Oct 15 11:41:48 2017 +0000 @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// See "https://developer.mbed.org/users/okini3939/notebook/mbed256_memory/" +// +// このプログラムは,STM 社のマイコンを使用し,mbed ライブラリが +// リビジョン 153 の場合に有効なことを確認している.それ以外は未確認 +// +// new 演算子でメモリ割り当てに失敗した場合はターミナルに +// "Operator new[] out of memory" というメッセージが表示される +// +// 割り当てに失敗した段階で上記のメッセージが出てプログラムが終了するので, +// if 文以下は実行されない. +// +// set_new_handler() は働いていないようである +// +// 2017/10/15, Copyright (c) 2017 MIKAMI, Naoki +//------------------------------------------------------------------------------ +//#include <new> // set_new_handler() を使う場合でも不要 + +/* +void MemoryAssignError() +{ + printf("Can't allocate to memory!\r\n"); + while(true); +} +*/ + +void MyNew() +{ +// set_new_handler(MemoryAssignError); + + uint8_t *ptr; +// ptr = new uint8_t[100000]; // OK + ptr = new uint8_t[1000000]; // 大きすぎて割り当てに失敗する + + if (ptr == NULL) + printf("\r\nMemory allocation error\r\n"); + else + { + printf("\r\nptr = 0x%08x\r\n", ptr); + delete[] ptr; + printf("正常に終了.\r\n"); + } +}