Arduino C ++ деструктор? - PullRequest
       6

Arduino C ++ деструктор?

1 голос
/ 21 марта 2012

Я знаю, что в Arduino вы не можете использовать delete.Итак, когда вызывается деструктор, определенный в классах C ++?

Аналогично, если я хочу создать указатель на массив, мне придется использовать malloc и free?

Ответы [ 2 ]

2 голосов
/ 21 марта 2012

Деструктор вызывается, когда объект уничтожен.Для автоматических (в стеке) переменных он вызывается после выхода из области действия ({}).Подробнее о автоматических переменных .

1 голос
/ 21 марта 2012

Деструктор вызывается, когда переменная выходит из области видимости или delete 'd.Это означает, что если у вас нет delete, вы можете только создавать не- POD структуры в автоматически памяти.

Вы не может использовать malloc и free, потому что конструкторы и деструкторы не будут называться .

Но вы можете попробовать создать свои собственные new и delete какэто:

void* operator new(size_t size)
{
    void* mem = malloc(size);
    if (!mem) {
        throw std::bad_alloc();
    }
    return mem;
}

void operator delete(void* ptr)
{
    free(ptr);
}

void* operator new[] (size_t size)
{
    return (operator new)(size);
}

void operator delete[](void* ptr)
{
    return (operator delete)(ptr);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...