Код: Выделить всё
#include
#include
using TupleData = std::tuple;
namespace
{
int x = 1, y = 2, z = 3, v = 4; // file-scope variables.
}
struct Data
{
Data(const TupleData & tupleData) : m_tupleData(tupleData) {}
const TupleData & m_tupleData;
void execute()
{
void * int1 = std::get(m_tupleData); // ASAN ISSUE IS BEING CAUGHT HERE : STACK USE AFTER SCOPE
}
};
void f()
{
Data data(std::make_tuple(&x, y, z, &v));
data.execute();
}
int main() {
f();
return 0;
}
Код: Выделить всё
void f()
{
auto tupleData = {&x, y, z &v};
Data data(tupleData);
data.execute();
}
Код: Выделить всё
void f()
{
TupleData tupleData = {&x, y, z &v};
Data data(tupleData);
data.execute();
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... d-is-causi