以下代码编译,
struct sigaction sa;
memset (&sa, 0, sizeof (sa));
sa.sa_handler = &handler;
sigaction (SIGRTMIN + 5, &sa, NULL);
Run Code Online (Sandbox Code Playgroud)
但如果我省略struct它会给我错误:
预期';' 在'sa'之前
我正在使用c ++,其中使用struct关键字不是必需的.
我用它时它是如何工作的struct.
我的程序有时会在main函数的最后一个语句中给出Segmentation Fault.
return a.exec();
我认为问题在于破坏的顺序.Qt文档说明了这一点
无论破坏的顺序如何,都不会删除QObject两次.
但是当我尝试使用代码时,它会给出分段错误.
QWidget* first = new QWidget;
QWidget* second = new QWidget(first);
delete first;
delete second;
Run Code Online (Sandbox Code Playgroud)
我知道什么时候first被删除,它second也会删除它的孩子.
那么为什么文档说破坏的顺序无关紧要?
我们应该总是小心删除子对象吗?
我正在使用QNetworkAccessManager下载文件,当文件下载完成时我想删除Downloader继承QObject到空闲内存的对象.但如果我删除它会导致分段错误.