我第一眼看到这个东西,觉得不就是让括号内的语句执行一次吗。有啥用咧?
作用解析
1. 避免goto语句
有时候,一个函数要在一开始的时候分配一些资源,假如中间发生了错误需要先释放内存,然后退出函数
于是我们有了第一个版本的测试代码
#include <iostream>
bool f1(int t) {
return t > 0;
}
bool f2(int t) {
return t == 0;
}
bool foo() {
int *p = (int *)malloc(5 * sizeof(int));
bool Tag;
Tag = f1(3);
if (!Tag) {
free(p);
p = NULL;
return false;
}
Tag = f2(3);
if (!Tag) {
free(p);
p = NULL;
return false;
}
std::cout << "f1和f2执行成功,开始释放p指向的内存空间...\n";
free(p);
p = NULL