Возможна ли переменная только в стеке в C ++? - PullRequest
6 голосов
/ 26 октября 2010

В настоящее время я хочу создать класс доступа к оболочке в многопоточной среде.Цель этого класса проста - захватить замок на его строительство и освободить замок на его уничтожение.Кроме этого, он идентичен обычному указателю.Более того, я хочу предотвратить его создание в области кучи, чтобы в конечном итоге снять блокировку.

Инверсия довольно проста (приватный конструктор с методом фабрики), но я не знаю, чтовозможна только переменная стека.Есть ли вообще?

Ответы [ 2 ]

12 голосов
/ 26 октября 2010

Ну, а как насчет того, что вы перегружаете operator new для своего класса и не заботитесь об этом?

0 голосов
/ 26 октября 2010

Я не понимаю проблемы?Любая переменная, определенная в области действия функции, предназначена только для стека.

class Lock {
public:
    Lock() {
        performLock();
    }

    ~Lock() {
        performUnlock();
    }
}

void foo() {
    // ... Code
    Lock onStackOnly;
    // ... Code that is locked
}


void foo() {
    // ... Code
    {
        Lock onStackOnly;
        // ... Code that is locked
    }

    // This code is unlocked.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...