标签: glibc

***glibc检测到***免费():无效下一个大小(快) - 应该工作?

我正在处理一个现有的c项目(sourceforge上的spglib),我在清理了一些数组初始化后遇到了以下问题:

*检测到glibc* tests/spglibtest:free():下一个大小无效(快):0x08ab46e0***

回溯是:

#0  0xb7fe1424 in __kernel_vsyscall ()
#1  0xb5cfdd61 in raise () from /lib/libc.so.6
#2  0xb5cff5ee in abort () from /lib/libc.so.6
#3  0xb5d397ed in ?? () from /lib/libc.so.6
#4  0xb5d3f7b1 in ?? () from /lib/libc.so.6
#5  0xb5d4052b in ?? () from /lib/libc.so.6
#6  0xb5d441cd in free () from /lib/libc.so.6
#7  0xb6681484 in sym_get_multiplicity (cell=0xbfffe1f0, symprec=0.050000000000000003) at /git/xtalopt-public/src/spglib/symmetry.c:168
#8  0xb6680550 in spg_find_primitive (lattice=0xbfffe2a8, position=0x813c6f0, types=0x813c700, num_atom=2, symprec=0.050000000000000003)
    at /git/xtalopt-public/src/spglib/spglib.c:253
Run Code Online (Sandbox Code Playgroud)

错误发生在下面的"免费(反式)"行中:

int sym_get_multiplicity(const Cell *cell, const double symprec)
{
  int …
Run Code Online (Sandbox Code Playgroud)

c arrays glibc

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

fgetc如何在内部工作

它是否实际上逐个字符地读取或者是否将某些字节读入内核缓冲区并按字符返回到用户字符?

和它一样fgets吗?

让我说我使用glibc和gcc编译器.

c glibc stdio fgets fgetc

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

编译glibc版本的时间检查

我需要编译时间检查将使用哪个版本的glibc.

我可以找到唯一的编译时检查(即#defines)返回glibc日期(__ GLIBCXX__),日期和版本之间的对应似乎是iffy.如何在编译时检查将使用的glibc版本?

我的代码将在几个系统上编译和运行,包括一个非常旧的系统.特别是我对使用malloc_info感兴趣(参见http://man7.org/linux/man-pages/man3/malloc_info.3.html).这是在2.10版本中添加到glibc中的.该程序将在其构建的相同(或相同的系统)上使用.

glibc g++

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

如何使用__malloc_hook?

GNU C Library Reference Manual中,有一个示例程序(p.65),但我不知道这三个句子__malloc_hook = old_malloc_hook; old_malloc_hook = __malloc_hook; __malloc_hook = my_malloc_hook; 是什么 意思.特别是第二个,谁能为我解释一下?谢谢.

static void *
my_malloc_hook (size_t size, const void *caller)
{
    void *result;
    /* Restore all old hooks */
    __malloc_hook = old_malloc_hook;
    __free_hook = old_free_hook;
    /* Call recursively */
    result = malloc (size);
    /* Save underlying hooks */
    old_malloc_hook = __malloc_hook;
    old_free_hook = __free_hook;
    /* printf might call malloc, so protect it too. */
    printf ("malloc (%u) returns %p\n", (unsigned int) size, result); …
Run Code Online (Sandbox Code Playgroud)

c malloc glibc

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

在哪里可以找到在c标准头文件(如stdlib.h)中声明的函数的定义?

我正在使用Linux(ubuntu)。

我想阅读一些在头文件中声明的函数的函数定义,例如 stdlib.h

我尝试寻找,stdlib.c但找不到。

谁能告诉我在系统上哪里可以找到相应的代码文件。

如果我太天真,请原谅我。谢谢

c linux gcc glibc header-files

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

套接字事件如何传播/转换为epoll?

我很好奇epoll_wait()如何接收已注册的套接字(带有epoll_ctl())已准备好进行读/写的事件.

我相信glibc神奇地处理它.

那么,是否有一个文档描述了如何为套接字触发以下事件?

  1. EPOLLPRI
  2. EPOLLRDNORM
  3. EPOLLRDBAND
  4. EPOLLWRNORM
  5. EPOLLWRBAND
  6. EPOLLMSG
  7. EPOLLERR
  8. EPOLLHUP
  9. EPOLLRDHUP

PS最初我试图在我的盒子上将enum EPOLL_EVENTS粘贴到我的盒子里; stackoverflow认为我没有正确格式化代码块,虽然我用pre和then代码标签包装它,任何想法?

c linux glibc linux-kernel centos6

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

数学库现在是否包含在glibc中?

当我尝试从终端编译这个简单的代码时:

#include<stdio.h>

int main(void)
{

    printf("%f\n",sqrt(10));

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

运用

gcc main.c

命令,它被编译,a.out给出正确的答案.这意味着数学函数被添加到C标准库中,它自动链接.

但是如果在Eclipse IDE中编译相同的代码而不向属性添加任何库,则会给出未定义的引用错误.这意味着数学函数不是C标准库的一部分.

真相是什么?

c eclipse glibc math.h

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

glibc源代码中的L_宏

我正在阅读glibc的源代码,我发现它有两个具有相同名称的宏.
这一个在105行
#define L_(Str) L##Str
,这就在130行
#define L_(Str) Str

这些宏到底意味着什么?用法仅用于比较两个字符
.例如,在第494行,您可以看到它用于比较*f和'$'之间的字符值
if(*f == L_('$')).如果我们想比较两个字符,我们可以直接比较它们,而不是通过宏指导它们?另外,第105行宏的用例是什么?

c c++ glibc

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

fallocate和ftruncate有什么区别

他们都可以根据我的测试更改文件大小。他们为什么都可以将文件更改为更大和更短?fallocate和ftruncate有什么区别?

c linux glibc fallocate

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

什么是do_cos_slow.isra?

我编写了一个简单的代码进行测试prof

double bar_compute (double d) {
    double t = std::abs(d);
    t += std::sqrt(d);
    t += std::cos(d);

    return t;
}

// Do some computation n times
double foo_compute(unsigned n) {
    std::random_device rd;
    std::mt19937 mt(rd());
    std::uniform_real_distribution<double> dist(0.0, 1.0);

    double total = 0;
    for (int i=0; i<n; i++) {
        double d = dist(mt);
        total += bar_compute(d);
    }
    return total;
}
Run Code Online (Sandbox Code Playgroud)

当我运行prof并查看输出时,它是

  56.14%  runcode  libm-2.23.so       [.] __cos_avx                                                                                                                                
  27.34%  runcode  runcode            [.] _Z11foo_computej                                                                                                                         
  13.92%  runcode  runcode            [.] _Z11bar_computed                                                                                                                         
   0.86%  runcode  libm-2.23.so …
Run Code Online (Sandbox Code Playgroud)

trigonometry glibc avx perf

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

标签 统计

glibc ×10

c ×8

linux ×3

arrays ×1

avx ×1

c++ ×1

centos6 ×1

eclipse ×1

fallocate ×1

fgetc ×1

fgets ×1

g++ ×1

gcc ×1

header-files ×1

linux-kernel ×1

malloc ×1

math.h ×1

perf ×1

stdio ×1

trigonometry ×1