这可能是一个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