我正在测试是否可以使用gettimeofday()
来度量一段代码的性能。
#include <unistd.h>
#include <stdio.h>
#include <sys/time.h>
int main() {
struct timeval *tp_begin;
gettimeofday(tp_begin, NULL);
if (tp_begin == NULL) printf("tp_begin: Strange...\n");
struct timeval *tp_end;
gettimeofday(tp_end, NULL);
if (tp_end == NULL) printf("tp_end: Strange...\n");
return 0;
}
这段代码可以编译(使用
gcc -g test.c -o test
),我不希望打印任何内容,但输出如下:tp_end: Strange...
我试过很多次,但结果总是一样的。怎么回事?
最佳答案
您正在向函数传递未初始化的指针。结果可能是任何事情,这是未定义的行为。
要从gettimeofday
中获取结果,需要将有效指针传递给函数将填充的缓冲区。函数不提供缓冲区(即使它想提供也不能,因为指针参数是按值传递的)。
关于c - gettimeofday()不填充其timeval参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56310197/