gpt4 book ai didi

c - gettimeofday() 没有填充它的 timeval 参数

转载 作者:太空宇宙 更新时间:2023-11-04 06:11:10 25 4
gpt4 key购买 nike

我正在测试是否可以使用 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),我希望 stdout 不会打印任何内容,但这是输出:

tp_end: Strange...

我试过多次运行这个,但结果总是一样的。这是怎么回事?

最佳答案

您正在将未初始化的指针传递给函数。结果可能是任何东西,它是未定义的行为。

要从 gettimeofday 获得结果,您需要将一个有效指针传递给函数将填充的缓冲区。该函数不提供缓冲区(即使它不能提供)想要,因为指针参数是按值传递的)。

关于c - gettimeofday() 没有填充它的 timeval 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56310197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com