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

Dependencies:   Array_Matrix mbed

MyNew.hpp

Committer:
MikamiUitOpen
Date:
2019-04-10
Revision:
1:bbb9f0c3e523
Parent:
0:bb939e0bc6e2

File content as of revision 1:bbb9f0c3e523:

//------------------------------------------------------------------------------
//  See "https://developer.mbed.org/users/okini3939/notebook/mbed256_memory/"
//
//  このプログラムは,STM 社のマイコンを使用し,mbed ライブラリが
//  リビジョン 153, 172 の場合に有効なことを確認している.それ以外は未確認
//
//  new 演算子でメモリ割り当てに失敗した場合はターミナルに
//  "Operator new[] out of memory" というメッセージが表示される
//
//  割り当てに失敗した段階で上記のメッセージが出てプログラムが終了するので,
//  if 文以下は実行されない.
//
//  set_new_handler() は働いていないようである
//
//  2019/04/10, Copyright (c) 2019 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");
    }
}