我使用yesod创建了一个非常简单的应用程序.它并不是很常用,但是当我用htop检查时,它比服务器中的所有其他进程消耗了更多的CPU时间,包括运行时间更长的进程.此外,当我启动该过程时,我发现即使没有发出请求(大多数情况下没有发出请求),它的处理器使用时间也会不断增加.使用yesod应用程序这是常见的还是预期的?
我正在编写一个生成C代码的编译器.生成的程序只包含main函数,它们使用大量内存,用malloc()分配.分配的大部分内存仅用于程序的一小部分,我认为在使用后释放它是个好主意,因为它不会再被使用.我很高兴,如果valgrind会向我报告在程序结束时内存不是free()d,即仍然可以访问的内存.我在Makefile中使用带有--error-exitcode = 1的valgrind来自动检查这种问题.
问题是:有没有办法让valgrind退出1,以防仍有可达的分配?
#include <cstdio>
struct A {
int a;
A() {
a = 2;
printf("Default\n");
}
A(int b_) {
a = 1;
if(b_ == 10) {
A();
}
}
};
int main(int argc, char **argv) {
A a(10);
printf("a=%d\n", a.a);
A b(11);
printf("b=%d\n", b.a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这打印:
Default
a=1
b=1
Run Code Online (Sandbox Code Playgroud)
也就是说,它在b_ == 10时进入默认构造函数,但在不是时则进入默认构造函数.但它不会更改aa中的值,即使它进入Default构造函数.
为什么?