我刚开始学习C。
我试图编写一个函数来打开文件,读取BUFFER_SIZE,将内容存储在数组中,然后跟踪字符'\n'(因为我想获取输入的每一行)。
当我设置BUFFER_SIZE非常大时,我可以得到第一行。当我将BUFFER_SIZE合理的小数值(例如42)设置为第一行的末尾时,它会在末尾打印出一些奇怪的符号,但我猜这是我自己的代码中的一个错误。
但是,当我将其设置得BUFFER_SIZE非常小时,例如= 10,然后使用-fsanitizer=address来检查内存泄漏。它抛出错误的怪物:
==90673==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6020000000fb at pc 0x000108868a95 bp 0x7fff573979a0 sp 0x7fff57397998
READ of size 1 at 0x6020000000fb thread T0
Run Code Online (Sandbox Code Playgroud)
如果有人可以从一般意义上解释我:
什么是fsanitizer =地址标记?
什么是堆缓冲区溢出?
什么是地址和线程?在屏幕上以彩色显示线程的标志是什么?
以及为什么它说“在地址读取大小为1。”?
我真的很感激<3
所以我有一个像这样的元素的示例列表
(define A (list 'a 'c 'd 'e 'f 'e 'a))
Run Code Online (Sandbox Code Playgroud)
现在我想从这个样本中进行排名
(define (scan lst)
(foldl (lambda (element a-hash) (hash-update a-hash element add1 0))
(hash)
lst))
Run Code Online (Sandbox Code Playgroud)
结果应该是这样的:
> #(('a . 2) ('f . 1) ('e . 2) ....)
Run Code Online (Sandbox Code Playgroud)
因为`scan函数将使哈希表包含唯一键和该键的重复次数(如果它捕获未编制索引的键,它将为该新键创建一个新位置,从0开始计数).
然后我想对哈希表进行排序,因为它没有排序:
(define (rank A)
(define ranking (scan A))
(sort ranking > #:key cdr)))
Run Code Online (Sandbox Code Playgroud)
所以结果看起来像这样:
#(('a.2)('e.2)('f.1)......)
现在我想截断哈希表并在n = 1的阈值处抛弃底部(也就是说只采用重复次数超过2次的元素).
(define (truncate lst n)
(define l (length lst))
(define how-many-to-take
(for/list
([i l]
#:when (> (cdr (list-ref lst i))
n))
i))
(take lst …Run Code Online (Sandbox Code Playgroud) 我安装了 jekyll
须藤宝石安装 jekyll
然后我进入我的 GitHub repo 文件夹(其中包含 file index.html)和
杰基尔服务
但它会产生错误:
/var/lib/gems/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/document_drop.rb:8: 警告:已初始化常量
Jekyll::Drops::DocumentDrop::NESTED_OBJECT_FIELD_BLACKLIST
/usr/lib/ruby/vendor_ruby/jekyll/drops/document_drop.rb:8: 警告:NESTED_OBJECT_FIELD_BLACKLIST 的先前定义在这里
/var/lib/gems/2.5.0/gems/jekyll-3.8.5/lib/jekyll/drops/drop.rb:8: 警告:已初始化常量 Jekyll::Drops::Drop::NON_CONTENT_METHODS
/usr/lib/ruby/vendor_ruby/jekyll/drops/drop.rb:8: 警告:NON_CONTENT_METHODS 的先前定义在这里
配置文件:无
配置文件:无
配置文件:无
Run Code Online (Sandbox Code Playgroud)Source: /home/chi/eivorjussila.github.io Destination: /home/chi/eivorjussila.github.io/_site增量构建:禁用。使用 --incremental 启用
Run Code Online (Sandbox Code Playgroud)Generating... done in 0.095 seconds.杰基尔 3.1.6 | 错误:未定义的方法“bash_on_windows?” 对于 Jekyll::Utils::Platforms:Module
有谁知道为什么?
我的应用程序运行良好,heroku local但部署到 Heroku 后,每次我尝试以管理员身份登录/注册/登录时,它都会返回如下所示的错误。
我试图提出@csrf_exempt意见profile,但这并没有解决问题。
我能做些什么?
看一下这段代码,它想要释放 C 中链表内所有分配的节点:
ptr = list;
while (ptr != NULL)
{
node *next = ptr->next;
free(ptr);
ptr = next;
}
Run Code Online (Sandbox Code Playgroud)
原因是,在释放当前节点之前,我们需要一个临时变量 next 来存储指向下一个节点的指针。
你看到它node *next = ptr->next;在循环内部了吗?这样每次循环运行时,都会创建一个新的临时节点来存储指向下一个节点的指针。如果我们在循环外部创建变量节点并在循环内部重新分配它,是不是更好?
像这样:
ptr = list;
node *next = NULL;
while (ptr != NULL)
{
next = ptr->next;
free(ptr);
ptr = next;
}
Run Code Online (Sandbox Code Playgroud)
这样效率会更高吗?
c ×2
csrf ×1
declaration ×1
django ×1
fold ×1
free ×1
hash ×1
heap ×1
heroku ×1
jekyll ×1
linked-list ×1
malloc ×1
memory-leaks ×1
python ×1
python-3.x ×1
racket ×1
scheme ×1
sorting ×1