我安装了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++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
我试图在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 --versionApple LLVM版本8.1.0(clang-802.0.42)目标:x86_64-apple-darwin16.7.0线程模型:posix InstalledDir:/ Library/Developer/CommandLineTools/usr/bin
我不知道如何检查icc> = 13.0
这有什么不对?
在 C 和许多其他语言中,0 表示 false,1(或非零)表示 true。在 shell 中,进程状态的 0 表示成功,非零表示错误。Shell if 语句本质上使用 0 表示 true。为什么第一个 shell 的作者决定使用 0 表示 true?
当我在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(®ex,"(\babc\b|\bdef\b):[0-9]{10}@([A-Za-z0-9].*)", 0); //c program
Run Code Online (Sandbox Code Playgroud) 如何在C/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的初学者,所以请原谅我这个问题是愚蠢的还是怪问.
我正在阅读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) 我想在线路的另一侧读取连接设备的MAC地址.假设有2个设备,它们通过电线直接连接.第一个(DeviceX)已配置以太网接口(静态IP ....).第二个(DeviceY)对DeviceX一无所知,但它们是物理连接的.
有什么方法可以从DecviceY读取DeviceX MAC地址?可以通过DeviceX回复一些数据包从DeviceY发送一些特定的数据包吗?
我可以免费访问DeviceY的网络API,但是关于DeviceX我什么也做不了.
提前致谢.
我发现 clk_get_rate() 返回当前频率,但是有没有任何函数或方法可以找出 Linux 内核空间支持的最大频率?