這可能是一個noob問題,但我甚至不知道該怎麼去google。當函數耗盡時,struct被歸零了?
我試圖實現一個fuse文件系統,並且在傳遞結構時遇到了問題,可能是因爲我對C++沒有經驗。
static int getStat(std::string path, struct stat *stout)
{
...
struct stat *st = new struct stat();
lstat(path.c_str(), st);
// lstat correctly filled st according to gdb
...
stout = st;
// values are correctly copied to stout according to gdb
}
void something()
{
struct stat *st = new struct stat(); // this might also be stack allocated by fuse, idk
getStat("/", st);
// but st is all zero now !?
}
我錯過了什麼?我如何正確地將數據從功能中取出?
不確定你是否忽略了它,但請注意'getStat'必須返回一個值,否則你有UB。 – NathanOliver
如果在分配和重新分配給「stout」之前沒有「刪除」結構,那麼存在潛在的內存泄漏。 –
不要在堆上分配統計信息(不要新建)!在堆棧上分配並將地址傳遞給lstat。 – 2017-08-24 15:40:09