Re: Использование памяти стека
От: kov_serg Россия  
Дата: 01.11.22 14:44
Оценка:
Здравствуйте, maks1180, Вы писали:

M>Можно ли такое реализовать на с/с++, без ассемблерных вставок ?

M>Есть ли какие-нибудь расшерения с/с++, что-бы такое делать ?

M>1. функция funcA вызывает funcB.

M>2. функция funcB, решает сколько ей нужно памяти, выделяет её в стеке и заполняет данными и возвращает указатель на выделенную память.
M>3. сразу после возврата из funcB, мы сдвигаем регистр ESP(RSP), что-бы следующие вызовы не порушили эту память. Теперь внутри funcA мы можем безопастно использовать память выделенную в стеке funcB.

Типа такого?
#include <functional>

void funcB(std::function<void(char*)> cb) {
    int size=10+rand()%100; // deside
    char buf[size]; // allocate
    buf[0]=size&255; for(int i=1;i<size;i++) buf[i]=i&15; // prepare data
    cb(buf);
}

void funcA() {
    // code
    funcB([](char* buf){
        // code
    });
    // code
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.