小编Al *_*ndy的帖子

无法使用数据断点C++,Visual Studio 2013

我将调试器设置为Native Only,解决方案配置是Debug但New Data Breakpoint ...选项仍然是灰色的,我无法使用它.任何人都可以提示我还需要改变什么吗?

c++ breakpoints

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

将数据移动到 Rc/Arc 是否总是将其从堆栈复制到堆?

看下面这个简单的例子:

use std::rc::Rc;

struct MyStruct {
    a: i8,
}

fn main() {
    let mut my_struct = MyStruct { a: 0 };
    my_struct.a = 5;
    let my_struct_rc = Rc::new(my_struct);

    println!("my_struct_rc.a = {}", my_struct_rc.a);
}
Run Code Online (Sandbox Code Playgroud)

的官方文档Rc说:

该类型Rc<T>提供T了在堆中分配的 type 值的共享所有权。

理论上是清楚的。但是,首先my_struct不是立即包装成Rc,其次MyStruct是一个非常简单的类型。我可以在这里看到 2 个场景。

  1. my_struct被移入Rc内存内容时,它会从堆栈中复制到堆中。
  2. 编译器能够解决my_struct将移入 的问题Rc,因此它从一开始就将其放在堆中。

如果数字 1 为真,那么可能存在一个隐藏的性能瓶颈,因为在阅读代码时没有明确看到内存被复制(我假设MyStruct要复杂得多)。

如果数字 2 为真,我想知道编译器是否总是能够解决这些问题。提供的示例非常简单,但我可以想象它my_struct要复杂得多,并且在移动到Rc.

rust

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

为什么类字段在一个类方法中可调用而在另一个类中无法调用?

我有一个看起来像这样的课程:

class Sha3_224():
  def __init__(self):
    self.keccak = keccak.Keccak_f(b = 1600)
    self.sponge = sponge.Sponge(f = self.keccak, pad = sha3_hash_byte_padding, r = 1600 - 2*224, d = 224)
    self.digest = bytearray(0)

  def process(self, fd):
    fd.seek(0, 2)
    message = msg.Message(l = fd.tell(), fd = fd)
    fd.seek(0, 0)

    del(self.digest[0:len(self.digest)])
    self.sponge.process(msg = message, out = self.digest)

    print(self.digest)
    print(len(self.digest))

  def digest():
    print(self.digest)
Run Code Online (Sandbox Code Playgroud)

当我实例化一个对象时,我可以process毫无问题地调用它的方法但是当我尝试调用它的digest方法时,我得到了

TypeError:'bytearray'对象不可调用

我还可以print(self.digest)__init__没有错误.

谁能告诉我这种行为的原因?

python

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

在Linux上为裸机ARM准备GNU工具链

我想为裸机ARM准备GNU工具链,以便与Geany IDE一起使用.有一些像这样的教程:构建裸机的GNU ARM工具链,但我不明白几个步骤.

首先,每个使用Linux操作系统的人都隐式拥有gcc,binutils和gdb,为什么要下载其他人呢?其次所有教程告诉我用这样的东西配置gcc:*./configure --target = arm-elf.它甚至做了什么?难道它只是强迫我使用调用命令行GCC ARM-ELF-GCC,而不是海湾合作委员会或它改变我的gcc内部的一些选项?

到目前为止,我已经准备好了makefile,但我仍然不确定编译器选项.我没有更改任何gcc配置选项,我用这样的标志调用编译器:

CFLAGS = -Wall -std=c99 -march=armv7-m -mtune=cortex-m0
Run Code Online (Sandbox Code Playgroud)

我可以通过使用适当的参数调用gcc来准备工具链,还是需要在gcc配置中进行一些更改?

linux gcc arm gnu

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

标签 统计

arm ×1

breakpoints ×1

c++ ×1

gcc ×1

gnu ×1

linux ×1

python ×1

rust ×1