小编lve*_*lla的帖子

为什么valgrind将我的记忆报告为"绝对丢失"?

考虑以下代码:

#include <stdlib.h>

int* alloc()
{
    return malloc(250 * sizeof(int));
}

int main()
{
    int i;
    int *vars[3];
    for(i = 0; i < 3; ++i) {
        vars[i] = alloc();
    }
}
Run Code Online (Sandbox Code Playgroud)

Valgrind输出:

$ valgrind --leak-check=full ./lala
==16775== Memcheck, a memory error detector
==16775== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==16775== Using Valgrind-3.10.1 and LibVEX; rerun with -h for copyright info
==16775== Command: ./lala
==16775== 
==16775== 
==16775== HEAP SUMMARY:
==16775==     in use at exit: 3,000 bytes …
Run Code Online (Sandbox Code Playgroud)

c valgrind memory-leaks

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

我们可以依靠C结构表现良好的格式吗?

我们可以预测编译器如何实现C结构吗?

如果我写(非常严重对齐)结构:

struct {
  uint16_t a;
  uint32_t b;
  uint8_t c;
} s;

char *p = (char*)&s;
Run Code Online (Sandbox Code Playgroud)

我可以保证p[6]是一样的s.c吗?结构字段是以最明显和规范的方式分配的,因此我们可以预测每个字段在内存中的位置吗?

编辑:会struct __attribute__ ((__packed__)) {...} s;在GCC中让我这样做吗?

c gcc

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

如何检索系统中使用的端口?

在Linux特定的方式中,如何获取所有开放UDP端口的列表以及当前在某个接口中接受连接的所有TCP端口?

linux network-programming

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

整数转换为big-endian

在big-endian机器中,如果我有一个long变量并将其转换为a char,那么语言规范是否保证我会在演员之后得到最低有效位?

换一种说法:

long a = 50;
char b = (char)a;
assert(b == 50); /* Is it true? */
Run Code Online (Sandbox Code Playgroud)

我知道小端机器也是如此,但是big-endian呢?

c++

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

使用TreeWalker检索非Javascript文本节点

这个问题教会如何获取文档中的所有TextNode,这也是我的Javascript文本.过滤掉所有Javascript代码节点的最佳方法是什么?

javascript dom dhtml textnode

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

控制符号可见性的标准方法

在C++中使用C和plain函数,我可以使用static关键字阻止函数的符号输出:

static int foo(int a, int b) { /* ...  */ }
Run Code Online (Sandbox Code Playgroud)

但在一个类中,定义一个函数static具有完全不同的含义.有没有办法确保编译器我的整个类只能在模块中使用,而且不需要导出它的任何方法的符号?

c++ c++14

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

如何从UTF-8字符串的每个字符获取UNICODE代码?

使用C++ 11,我如何从UTF-8编码std::string中获取文本中每个字符的Unicode值uint32_t?

就像是:

void f(const std::string &utf8_str)
{
    for(???) {
       uint32_t code = ???;

       /* Do my stuff with the code... */
    }
}
Run Code Online (Sandbox Code Playgroud)

假设主机系统区域设置是UTF-8有帮助吗?C++ 11为此任务提供了哪些标准库工具?

c++ unicode encoding utf-8 c++11

0
推荐指数
1
解决办法
3470
查看次数

如何格式化整数以仅具有所需的大小?

我一直在尝试以下代码:

program hello
    write(*,"(i9)") 10
end program hello
Run Code Online (Sandbox Code Playgroud)

并改变格式字符串,尝试使写入输出的字符串大小恰好满足表示整数所需的大小,但到目前为止我无法管理它。如何在 Fortran 中编写“适合”整数?

fortran string-formatting fortran90

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