小编Tus*_*abh的帖子

rspec - 找不到命令

作为任务的一部分,我正在创建一个基本网站.当rails服务器没有运行时,我为根目录执行"rspec",执行rspec.但测试失败了.当我启动rails服务器并从另一个终端窗口执行rspec(在转到根目录后),rspec不起作用.我收到以下消息 -

Tushars-MacBook-Pro:recipefinder tusharsaurabh $ rspec -bash:rspec:command not found

请让我知道,如何解决它.

ruby rspec ruby-on-rails

4
推荐指数
3
解决办法
5964
查看次数

Rust 程序中的内存泄漏

我使用 windows-sys crate 编写了一个 Rust 程序,并收集所提供的查询的性能计数器值。我使用微软团队提供的示例程序(此处)。

该程序能够检索性能计数器值。然而,当我检查进程资源管理器以监视占用空间时,我注意到下面的私有字节图表。由于私有字节呈线性增加,因此表明存在内存泄漏。

在此输入图像描述

我无法使用 Windbg,因为 Windbg 无法连接到 Microsoft 符号服务器。因此,我决定通过注释代码并检查私有字节来手动识别问题的根源。相关代码如下——

fn execute_perf_query(input_query: &String,perf_query: &mut Vec<PerfEntryForMongo>)->f64{
    log::info!("Performing counter for  {:?}", input_query);

    let hostname = gethostname().into_string();
    
    unsafe {
        let mut query = 0;
        let p: *const u16 = std::ptr::null();
        
        PdhOpenQueryW(p, 0 as usize, &mut query);

    }

    return -1.0;
    //println!("Returning Now");
}
Run Code Online (Sandbox Code Playgroud)

请注意,目前我已注释掉与PdhAddCounterW、 、相关的代码PdhCollectQueryDataPdhGetFormattedCounterValue以了解每个 Windows 调用对私有字节的影响。

Vec<PerfEntryForMongo>每次迭代后都会被清除,因此不会导致内存泄漏。hostname是一个字符串,将在堆上分配,但是一旦范围结束,内存将被释放。

我正在使用原始指针,但它是一个 NULL 指针,不应在堆中分配任何内存。我需要了解什么导致内存泄漏。我已经介绍了与引用、借用和不安全 Rust 相关的章节,但我无法确定内存泄漏的原因。

windows performancecounter rust

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

EnumProcesses 无法更新 Vector

我试图使用EnumProcessesWin32 (psapi) 提供的函数枚举 Windows 进程。生活很顺利,所以我使用 Rust 而不是 C++。代码如下。

Cargo.toml

[dependencies.windows]
features = [
    "Win32_Foundation",
    "Win32_System_ProcessStatus"
]
Run Code Online (Sandbox Code Playgroud)

主程序.rs

use windows::Win32::System::ProcessStatus::*;
fn main() {
    unsafe{
        let mut cb_needed: u32 = 0;
        let mut a_processes: Vec<u32> = Vec::with_capacity(1024);
        let result: windows::Win32::Foundation::BOOL = EnumProcesses(a_processes.as_mut_ptr(), 1024*4, &mut cb_needed);
        let mut _c_processes: u32 = 0;
        _c_processes = cb_needed / 4;
        println!("{:?}",_c_processes);
        let mut count: u32 = 0;
        while count < _c_processes {
            println!("{:?}",a_processes[count as usize]);
            count += 1;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我调试代码时,变量a_processes显示长度为零。然而,变量 …

windows winapi rust psapi windows-rs

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