gpt4 book ai didi

C++, Lint : lint does not discover taking reference to a local variable and passing it on to another function

转载 作者:行者123 更新时间:2023-11-30 04:23:04 25 4
gpt4 key购买 nike

为什么 lint 在下面的代码示例中的以下三行中的任何一行都没有报错?

timeout(&a);
timeout(&b);
if (pthread_create(&t1, NULL, timeout, (void*) &a) != 0)

传递一个指向局部变量的指针不是一直被认为是不安全的吗?并且两个变量都是本地的...

#include <stdio.h>
#include <pthread.h>

static void* timeout(void* c)
{
int d = *(*((int**)c));
}

static void sendMessage(int* a)
{
timeout(&a);
int* b = new int(2);
timeout(&b);

pthread_t t1;
if (pthread_create(&t1, NULL, timeout, (void*) &a) != 0)
{
printf("pthread_create() error\n");
}
}

int main()
{
printf("Running..\n");
int* e = new int(1);
sendMessage(e);
delete e;
return 0;
}

约阿希姆

最佳答案

将局部变量的地址传递给函数是非常有效和常见的。是的,有时候它是不正确的,但是让它成为 lint 会提示的东西会产生过多的噪音/误报。

关于C++, Lint : lint does not discover taking reference to a local variable and passing it on to another function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13533017/

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