いろいろなテクニック.Nucleo と DISCO-F746 用.

Dependencies:   Array_Matrix mbed

Revision:
0:bb939e0bc6e2
Child:
1:bbb9f0c3e523
--- /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");
+    }
+}