标签: c

一个免费的工具,根据一组编码标准检查C/C++源代码?

看起来很容易找到这样的Java工具(Checkstyle,JCSC),但我似乎找不到一个用于C/C++的工具.我不是在寻找类似于lint的静态代码分析器,我只想检查编码标准,如变量命名,大小写,间距,标识,括号放置等.

c c++ coding-style

148
推荐指数
6
解决办法
11万
查看次数

148
推荐指数
7
解决办法
17万
查看次数

解析/ proc /文件是否安全?

我想解析/proc/net/tcp/,但它安全吗?

我应该如何打开和读取文件,/proc/而不是害怕,某些其他进程(或操作系统本身)将在同一时间更改它?

c c++ unix linux procfs

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

如果没有循环或条件语句从1到1000打印的C代码如何工作?

我发现C代码打印从1到1000没有循环或条件:但我不明白它是如何工作的.任何人都可以通过代码解释每一行吗?

#include <stdio.h>
#include <stdlib.h>

void main(int j) {
  printf("%d\n", j);
  (&main + (&exit - &main)*(j/1000))(j+1);
}
Run Code Online (Sandbox Code Playgroud)

c function-pointers

148
推荐指数
2
解决办法
8674
查看次数

在C中拆分带分隔符的字符串

如何使用C编程语言编写一个函数来拆分和返回带有分隔符的字符串数组?

char* str = "JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC";
str_split(str,',');
Run Code Online (Sandbox Code Playgroud)

c string split

148
推荐指数
5
解决办法
58万
查看次数

如何理解局部敏感哈希?

我注意到LSH似乎是一种寻找具有高维属性的类似项目的好方法.

在阅读了论文http://www.slaney.org/malcolm/yahoo/Slaney2008-LSHTutorial.pdf之后,我仍然对这些公式感到困惑.

有没有人知道一个博客或文章解释这个简单的方法?

c machine-learning hashmap nearest-neighbor locality-sensitive-hash

148
推荐指数
4
解决办法
6万
查看次数

为什么这段代码容易受到缓冲区溢出攻击?

int func(char* str)
{
   char buffer[100];
   unsigned short len = strlen(str);

   if(len >= 100)
   {
        return (-1);
   }

   strncpy(buffer,str,strlen(str));
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

此代码容易受到缓冲区溢出攻击,我正在试图找出原因.我认为它与len被宣布为一个short而不是一个int,但我不是很确定.

有任何想法吗?

c security buffer-overflow

148
推荐指数
3
解决办法
2万
查看次数

为什么x [0]!= x [0] [0]!= x [0] [0] [0]?

我正在研究一些C++,我正在用指针进行斗争.我明白通过声明我可以有3个级别的指针:

int *(*x)[5];
Run Code Online (Sandbox Code Playgroud)

所以这*x是一个指向5个指向的元素数组的指针int.我也知道x[0] = *(x+0);,x[1] = *(x+1)等等....

那么,鉴于上述声明,为什么x[0] != x[0][0] != x[0][0][0]呢?

c c++ arrays pointers

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

为什么这个记忆食者真的不吃记忆?

我想创建一个程序来模拟Unix服务器上的内存不足(OOM)情况.我创造了这个超级简单的记忆食者:

#include <stdio.h>
#include <stdlib.h>

unsigned long long memory_to_eat = 1024 * 50000;
size_t eaten_memory = 0;
void *memory = NULL;

int eat_kilobyte()
{
    memory = realloc(memory, (eaten_memory * 1024) + 1024);
    if (memory == NULL)
    {
        // realloc failed here - we probably can't allocate more memory for whatever reason
        return 1;
    }
    else
    {
        eaten_memory++;
        return 0;
    }
}

int main(int argc, char **argv)
{
    printf("I will try to eat %i kb of ram\n", memory_to_eat);
    int megabyte = …
Run Code Online (Sandbox Code Playgroud)

c linux memory virtual-memory

148
推荐指数
4
解决办法
1万
查看次数

num ++是'int num'的原子吗?

一般地,对于int num,num++(或++num),作为读-修改-写操作中,是不是原子.但我经常看到编译器,例如GCC,为它生成以下代码(在这里尝试):

在此输入图像描述

由于第5行对应于num++一条指令,我们可以得出结论,在这种情况下num++ 是原子的吗?

如果是这样,是否意味着如此生成num++可以在并发(多线程)场景中使用而没有任何数据争用的危险(例如,我们不需要制作它,std::atomic<int>并强加相关成本,因为它是无论如何原子)?

UPDATE

请注意,这个问题不是增量是否原子的(它不是,而且是问题的开头行).它是否可以在特定场景中,即在某些情况下是否可以利用单指令性质来避免lock前缀的开销.而且,作为公认的答案约单处理器的机器,还有部分提到这个答案,在其评论和其他人谈话解释,它可以(尽管不是C或C++).

c c++ assembly multithreading atomic

148
推荐指数
8
解决办法
1万
查看次数