小编Jen*_*edt的帖子

为什么Cppcheck没有找到这个明显的数组越界错误?

我安装了Cppcheck工具,用于我的C++项目的静态代码分析,并感觉它表现不佳.例如,任何人都可以告诉我为什么 Cppcheck无法在以下代码中找到数组越界错误?

void f(int c) { 
    char *p = new char[10]; 
    p[c] = 42; 
} 

void g() { 
    f(100); 
} 
Run Code Online (Sandbox Code Playgroud)

有一个在线演示,可以使用Cppcheck方便地检查此代码.所有它提到的是第4行的内存泄漏,没有潜在缓冲区溢出的迹象.

c++ code-analysis static-code-analysis cppcheck

7
推荐指数
2
解决办法
3717
查看次数

如何检查arm-none-linux-gnueabi-g ++对C++ 11的支持

我写它使用一个便携式的应用程序C++11一样的功能std::atomic,std::threads等我如何验证我的ARM GCC交叉编译工具链支持的C++11标准是什么?

我尝试使用arm-none-linux-gnueabi-g++ -v ,arm-none-linux-gnueabi-g++ --version 但在使用时返回错误-std=c++11

编辑 #arm-linux-gnueabi-g ++ -std = c ++ 11 dum.cpp

cc1plus:错误:无法识别的命令行选项'-std = c ++ 11'

目标:arm-linux-gnueabi

gcc版本4.6.2

c++ gcc arm cross-compiling

7
推荐指数
1
解决办法
8238
查看次数

在OS X上构建valgrind

我试图在macOS Sierra上安装valgrind(版本10.12.6).运行./configure.sh时,出现此错误:

检查支持的gcc版本...配置: - prefix =/Library/Developer/CommandLineTools/usr --with-gxx-include-dir =/usr/include/c ++/4.2.1配置: - prefix =/Library/Developer/CommandLineTools/usr --with-gxx-include-dir =/usr/include/c ++/4.2.1 no(applellvm-8.1.0)configure:错误:请使用gcc> = 3.0或clang > = 2.9或icc> = 13.0

所以,我检查了我的gcc和clang版本.答复如下:

Ankits-MacBook-Air:valgrind ankitshubham$ gcc --version

配置为: - prefix =/Library/Developer/CommandLineTools/usr --with-gxx-include-dir =/usr/include/c ++/4.2.1 Apple LLVM版本8.1.0(clang-802.0.42)目标: x86_64-apple-darwin16.7.0线程模型:posix InstalledDir:/ Library/Developer/CommandLineTools/usr/bin

Ankits-MacBook-Air:valgrind ankitshubham$ clang --version

Apple LLVM版本8.1.0(clang-802.0.42)目标:x86_64-apple-darwin16.7.0线程模型:posix InstalledDir:/ Library/Developer/CommandLineTools/usr/bin

我不知道如何检查icc> = 13.0

这有什么不对?

macos gcc valgrind

7
推荐指数
2
解决办法
3317
查看次数

为什么shell使用0作为成功?

在 C 和许多其他语言中,0 表示 false,1(或非零)表示 true。在 shell 中,进程状态的 0 表示成功,非零表示错误。Shell if 语句本质上使用 0 表示 true。为什么第一个 shell 的作者决定使用 0 表示 true?

shell operating-system

6
推荐指数
1
解决办法
1464
查看次数

正则表达式不适用于C语言

当我在shell上使用它时,我正在使用正则表达式,但它不在C程序中.

有什么想法吗?

echo "abc:1234567890@werty.wer.sdfg.net" | grep -E "(\babc\b|\bdef\b):[0-9]{10}@([A-Za-z0-9].*)"   //shell

reti = regcomp(&regex,"(\babc\b|\bdef\b):[0-9]{10}@([A-Za-z0-9].*)", 0); //c program
Run Code Online (Sandbox Code Playgroud)

regex posix

6
推荐指数
1
解决办法
303
查看次数

POSIX系统上的Zombie Threads

如何在C/C++中形成僵尸线程,为了防止它们被创建,您需要做些什么?我知道他们只是正常的线程没有正确终止,但我对细节有点模糊.

multithreading posix

5
推荐指数
2
解决办法
8092
查看次数

C:这个宏是什么意思?

您如何阅读此宏的第二行?在这种情况下,(类型*)0是什么意思?

#define container_of(ptr, type, member) ({ \
const typeof( ((type *)0)->member ) *__mptr = (ptr); \
(type *)( (char *)__mptr - offsetof(type,member) );})
Run Code Online (Sandbox Code Playgroud)

c macros gcc

5
推荐指数
2
解决办法
1425
查看次数

为什么在测试真实条件后执行printf?

我是C的初学者,所以请原谅我这个问题是愚蠢的还是怪问.

我正在阅读C primer plus,第8章中的一个例子是测试用户是否输入的一些循环 - a newline character or not我无法理解.

代码很短,所以我会告诉你:

int main(void)
{
    int ch; /* character to be printed */
    int rows, cols; /* number of rows and columns */
    printf("Enter a character and two integers:\n");
    while ((ch = getchar()) != '\n')
    {
        if (scanf("%d %d",&rows, &cols) != 2)
            break;
        display(ch, rows, cols);
        while (getchar() != '\n')
            continue;
        printf("Enter another character and two integers;\n");
        printf("Enter a newline to quit.\n");
    }
    printf("Bye.\n");
    return 0; …
Run Code Online (Sandbox Code Playgroud)

c

5
推荐指数
1
解决办法
151
查看次数

是否有可能找到直接有线连接设备的MAC地址?

我想在线路的另一侧读取连接设备的MAC地址.假设有2个设备,它们通过电线直接连接.第一个(DeviceX)已配置以太网接口(静态IP ....).第二个(DeviceY)对DeviceX一无所知,但它们是物理连接的.

有什么方法可以从DecviceY读取DeviceX MAC地址?可以通过DeviceX回复一些数据包从DeviceY发送一些特定的数据包吗?

我可以免费访问DeviceY的网络API,但是关于DeviceX我什么也做不了.

提前致谢.

ip networking network-programming mac-address

5
推荐指数
1
解决办法
2万
查看次数

获取Linux内核空间支持的最大CPU频率

我发现 clk_get_rate() 返回当前频率,但是有没有任何函数或方法可以找出 Linux 内核空间支持的最大频率?

linux cpu kernel frequency

5
推荐指数
1
解决办法
430
查看次数