小编Jul*_*les的帖子

什么时候使用valloc()而不是malloc()更合适?

C(和C++)包括一系列动态内存分配函数,其中大部分都是直观命名的,并且易于向程序员解释,并对内存有基本的了解.malloc()简单地分配内存,同时calloc()分配一些内存并急切地清除它.还有,realloc()并且free(),这是非常不言自明的.

malloc()也提到的联机帮助页valloc(),它分配与页边框对齐的(size)字节.

不幸的是,我的背景在低级错综复杂方面不够彻底; 分配和使用页面边界对齐的内存有什么影响,什么时候这是适当的,而不是常规malloc()calloc()

c malloc memory-management

12
推荐指数
2
解决办法
3057
查看次数

可以在OS X上构建musl libc吗?

我正在尝试在运行OS X 10.11.5的机器上构建musl-libc.不幸的是,我在运行时遇到以下错误make:

clang: warning: optimization flag '-fexcess-precision=standard' is not supported
clang: warning: optimization flag '-frounding-math' is not supported
<inline asm>:6:1: error: unknown directive
.weak _DYNAMIC 
^
<inline asm>:7:1: error: unknown directive
.hidden _DYNAMIC 
^
2 errors generated.
make: *** [obj/crt/Scrt1.o] Error 1
Run Code Online (Sandbox Code Playgroud)

我正在使用Clang 7.3.0(703-0-31),而我正在使用来自musl repo的源码git://git.musl-libc.org/musl.

macos building musl

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

到底是什么" - <",无论如何?

有一天,我遇到了一个运算符,-<出现在将值绑定到monad中的变量的上下文中; 具体来说,它看起来像是将一个值传递给一个函数,然后该函数被分配(并且可能被评估?)到monad范围内存在的变量.

用法示例:

myMonad = do
    myVar <- f -< x
Run Code Online (Sandbox Code Playgroud)

关于这个的一些问题:首先,它叫什么?运营商本身是不可谷歌的(谷歌不喜欢<或者>),我发现的一个名称," 箭头应用程序 ",通常链接到Haskell中的另一种Arrow存在,这似乎是无关的.

第二,为什么在大多数学习资源中没有解释这个操作员?无论是"Monads的温和介绍"还是LYAH都没有提及它,而且大多数Haskell运营商的名单都放弃了它.(这被认为是不好的做法吗?)

最后,这相当于使用括号,如,(myVar <- f -< x) == (myVar <- (f x))?还是更喜欢使用let myVar = (f x)?在任何一种情况下,如果这是它的使用方式,为什么要使用-<parens或$

monads haskell

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

有没有办法在SVG文件中嵌入Google Web Font脚本?

我是SVG的新手,刚刚在Illustrator中创建了我的第一个体面的图形.我已经将它嵌入到一个页面(使用<embed>标签)和标签中的Ubuntu字体的Google Web Fonts脚本<head>,但事实证明,Ubuntu字体在常规文本中正确显示,但是这个技巧可以在SVG,谷歌脚本必须嵌入SVG本身.如何才能做到这一点?

这是有 问题的SVG文件的链接.

fonts svg cross-browser google-webfonts

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

将链表保存并加载到二进制文件(C)

我正在尝试从C中的二进制文件中编写和读取链接列表.我的目的是为护理之家保存和加载常驻数据(实际上,我是护士),以便通过资源利用率对每个居民进行分类组.我已经使用一系列结构为固定数量的居民(32,即设施的容量)做了这件事,但现在我需要为一组可变的居民做这件事,以便进行统计研究.显然,对于第一次尝试,我将结构简化为最小,因为实际结构包含109个数据.

我非常接近解决方案,但有些东西不起作用,也就是说,保存列表的每个元素都与一个空格一起交替.这个代码应该读取二进制文件中的列表,在终端上显示它,添加一个新元素,保存列表.当然,每个程序都应该放在一个函数中.

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

struct pat
{
    char surn [16];
    char name [16];
    struct pat *next;
};

static FILE *h;
static struct pat *osp;
static struct pat *first;

struct pat *make_structure (void);

int main()
{
    initscr();
    raw();
    keypad (stdscr, TRUE);
    noecho();

    clear();

    osp=make_structure();
    first=osp;

    h=fopen ("archivio","r");

    if (h==NULL)
        printw ("Archivio inesistente\n");
    else
    {
        while (!feof(h))
        {
            printw ("Lungh. nome = %d\n",sizeof osp->name);
            fread (osp->surn,sizeof osp->surn,1,h);
            fread (osp->name,sizeof osp->name,1,h);
            printw ("Cognome: %s\tNome: %s\n",osp->surn,osp->name);
            osp->next=make_structure();
            osp=osp->next; …
Run Code Online (Sandbox Code Playgroud)

c linked-list

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

用Homebrew安装gcc49

我想让Homebrew安装gcc49(GCC 4.9).具体来说,我正在使用命令进行安装,

brew install homebrew/versions/gcc49
Run Code Online (Sandbox Code Playgroud)

但是,通常这样做,我得到一个错误,说我错过了gmp4.这是它变得奇怪的地方.

如果我这样做brew install homebrew/versions/gmp4,我再次gmp4被告知失踪.该库未安装.对于其他一些必需的库,也会发生同样的事情.现在,我试图运行,而不是修复这种奇怪的行为

brew install homebrew/versions/gcc48 --with homebrew/versions/gmp4 --with homebrew/versions/libmpc08 --with homebrew/versions/mpfr2 --with homebrew/versions/cloog018 --with homebrew/versions/isl011
Run Code Online (Sandbox Code Playgroud)

......结果如何

==> Installing dependencies for gcc48: gmp4, mpfr2, libmpc08, isl011, cloog018
==> Installing gcc48 dependency: gmp4
==> Downloading ftp://ftp.gmplib.org/pub/gmp/gmp-5.1.3.tar.bz2
######################################################################## 100.0%
==> Patching
patching file gmp-h.in
==> ./configure --prefix=/usr/local/Cellar/gmp/5.1.3 --enable-cxx
==> make
==> make check
==> make install
Error: Empty installation
Run Code Online (Sandbox Code Playgroud)

这是真正让我感到困惑的最后一行.我从未见过我试图安装的任何软件返回的内容 - 发生了什么,我该如何解决?

有趣的是,当我在具有相同Homebrew版本的桌面上尝试此操作时,GCC 4.9通过简单的运行安装没有问题brew install gcc49,甚至无需经过 …

homebrew gcc4.9

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

为什么 Fraktur 字体有 ANSI 转义序列?

我在浏览维基百科方便的 ANSI 转义码列表时,注意到这是Fraktur\33[20m (一种黑字字体)的转义序列。转义序列有注释,几乎从未使用过。为什么首先要有这个转义序列呢?字体甚至不是等宽字体。这是复活节彩蛋吗?

ansi-escape

6
推荐指数
0
解决办法
1225
查看次数

如何使用CURLOPT_HEADERFUNCTION读取单个响应头字段?

我正在实现一个C程序,它需要从Content-Length头部读取远程文件的大小(Content-Length在响应头中发送时).

我查看了libcurl的文档,到目前为止我能够提出的最好的是CURLOPT_HEADERFUNCTION设置的回调函数.我已经整理了一个回调的玩具实现,它应该打印标题STDOUT:

size_t hdf(char* b, size_t size, size_t nitems, void *userdata) {
    printf("%s", b);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

虽然我希望能够打印Content-Length标题(或者,至少打印所有标题),但我只能使用此函数来打印响应代码:

$ ./curltest "some_url_which_sends_back_Content_Length"
HTTP/1.1 200 OK
Run Code Online (Sandbox Code Playgroud)

如果我注释掉我的行中main的回调将回调设置为hdf上面定义的函数,则默认行为是将所有标题打印到STDOUT.

作为参考,这里是main我正在使用的函数,基于libcurl邮件列表上的一个线程:

int main(int argc, char *argv[]) 
{ 
   CURLcode ret; 
   CURL *hnd = curl_easy_init(); 
   curl_easy_setopt(hnd, CURLOPT_URL, argv[1]); 
   curl_easy_setopt(hnd, CURLOPT_HEADER, 1); 
   curl_easy_setopt(hnd, CURLOPT_NOBODY, 1);
   curl_easy_setopt(hnd, CURLOPT_HEADERFUNCTION, hdf);
   ret = curl_easy_perform(hnd);
   curl_easy_cleanup(hnd);
}
Run Code Online (Sandbox Code Playgroud)

如何为CURLOPT_HEADERFUNCTION可以将特定标头加载到内存中或以其他方式操作它的选项编写回调- 或者至少将所有标头加载到内存中?

c libcurl

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

websocket上的二进制数据,无需编码为UTF-8或base64

我试图在二进制模式下使用websockets将二进制数据从用Python编写的服务器传输到客户端浏览器(运行javascript).我已经在文本模式下实现了这种通信,但现在我希望通过以二进制模式进行通信来提高性能.

我已经看到了所有的实施例(例如,并且还如果一个通过其使用旋风matplotlib/webagg的源代码DIG),如权利要求他们正在使用二进制模式,但实际上它们似乎原始二进制数据编码成UTF-8(或者base64)在传输之前的某个时刻.在我看来,这不是真正的二进制传输,因为它增加了30%到50%的开销.

所以我的问题是,为了使用基于IP的websockets,是否必须将二进制数据编码为utf-8或base64?如果没有,请指出一个没有编码的例子.

我一直认为套接字确实支持真正的二进制通信,但由于某种原因,可能不是IP websockets的情况.也许有人可以阐明这个问题.在这一领域,过去一年左右似乎取得了进展,从而增加了混乱.

javascript python binary websocket

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

F#等效的Python范围

我已经开始学习F#了,我遇到的一件事是我不知道range用Python 表达相当于函数的方法.我知道[1..12]相当于范围(1,13).但我想要做的是range(3, 20, 2)(我知道Haskell [3,5..19]).我怎么表达这个?

python f#

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