小编Str*_*ger的帖子

这种动态分配有什么作用?

今天,我发现你可以用C++编写这样的代码并编译它:

int* ptr = new int(5, 6);
Run Code Online (Sandbox Code Playgroud)

这样做的目的是什么?我当然知道动态的new int(5)东西,但在这里我迷失了.有线索吗?

c++ new-operator comma-operator dynamic-memory-allocation

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

DirectX11:将数据从ComputeShader传递给VertexShader?

是否可以将滤镜应用于要使用Compute Shader渲染的几何数据,然后将结果用作顶点着色器中的输入缓冲区?这样可以省去回读数据的麻烦(和时间).

任何帮助深表感谢.

directx directx-11 slimdx compute-shader vertex-shader

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

运行时检查失败#2 - 变量周围的堆栈已损坏

我已经在stackoverflow上看到了一些问题,但没有一个能解决我的问题...

我在C中有这样的代码:


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

int main ()
{
    char str[] = "";
    scanf("%[^\n]", str);
    printf("Você digitou: %s\n", str);
    system("pause");
}
Run Code Online (Sandbox Code Playgroud)

当我运行该程序时,我有错误:

运行时检查失败#2 - 变量'str'周围的堆栈已损坏.

现在,我真的不知道我在那里做错了什么...... :(

c

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

C++ 11锁定自由堆栈

我正在阅读Anthony Williams的C++ Concurrency in Action,并且不了解它pushlock_free_stack类实现.

为什么原子load不在while循环中呢?他给出的理由是:

因此,您不必每次都通过循环重新加载头,因为编译器会为您执行此操作.

但我不明白.有人可以对此有所了解吗?

template<typename T>
class lock_free_stack
{
private:
 struct node
 {
   T data;
   node* next;
   node(T const& data_) : 
     data(data_)
   {}
 };
 std::atomic<node*> head;
public:
 void push(T const& data)
 {
   node* const new_node=new node(data); 
   new_node->next=head.load(); 
   while(!head.compare_exchange_weak(new_node->next,new_node)); 
 }
};
Run Code Online (Sandbox Code Playgroud)

stack lock-free c++11

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

LLVM IR 主函数返回 void

我正在测试一个仅返回 void 的主函数,并且在使用以下命令运行位码时出现核心转储错误(信号 65 或 73)lli

define void @main() {
entry:
  ret void
}
Run Code Online (Sandbox Code Playgroud)

这是 LLVM 的限制lli还是完全非法?

我很清楚,在 C++ 中,返回类型为 void 的 main 函数的声明是不正确的。事实上,我已经用 Clang 尝试过这个(这只是一个警告),并得到几乎相同的代码(由于属性的原因并不完全相同#0,但足够接近,我相信这些差异不会导致这个问题):

; Function Attrs: nounwind
define void @main() #0 {
entry:
  ret void
}
Run Code Online (Sandbox Code Playgroud)

llvm void

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

printf和格式规则

我想知道printf函数的所有格式化规则目前是否在F#中工作(或实现)?

例如,如果我想将参数对齐9个字符(用空格填充或0),我会使用:

printfn "%9A %9A" arg1 arg2 //don't seem to work
Run Code Online (Sandbox Code Playgroud)

谢谢!

printf f#

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

如何编写与Array.sum兼容的新类型?

type Foo(...) =
    ...

let a = Array.create 10 (new Foo())

let sum = Array.sum a
Run Code Online (Sandbox Code Playgroud)

f#

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

Static extension methods supporting member constraints

I need to implement a static extension method supporting member constraints on some basic primitive types like integers, floats, etc. Here's my code for signed integers:

module MyOperators =
    let inline foo (x : ^T) = (^T : (static member Foo : ^T -> int) (x)) 

    type System.Int32 with 
        static member Foo(x : Int32) = 7 // static extension
Run Code Online (Sandbox Code Playgroud)

Test code:

open MyOperators    
let x = foo 5 // x should be 7
Run Code Online (Sandbox Code Playgroud)

But compiler complains with error:

The type …

extension-methods f# type-constraints

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

多个arity静态类型约束

假设我有一堆矢量类型(一个XNA),其中一些有静态成员Cross:

type Vector3 =
  ...
  static member Cross (a : Vector3, b : Vector3) = new Vector3(...)
Run Code Online (Sandbox Code Playgroud)

我可以定义cross函数并编译:

let inline cross (x : ^T) (y : ^T) = (^T : (static member Cross : (^T * ^T) -> ^T) ((x,y)))
Run Code Online (Sandbox Code Playgroud)

不幸的是我无法使用它并有以下错误:

let res = cross a b
                 ^
Run Code Online (Sandbox Code Playgroud)

成员或对象构造函数Cross接受2个参数但是在这里给出1.所需的签名是静态成员Vector3.Cross:a:Vector3*b:Vector3 - > Vector3

它甚至可能吗?谢谢你的帮助!

f# type-constraints

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

默认发行版本会一直使用多达SSSE3指令吗?

查看由cargocargo build --release)生成的二进制代码。我在二进制文件中发现SSSE3使用了类似的指令pshufb

看着CFG我有:

$ rustc --print cfg
debug_assertions
target_arch="x86_64"
target_endian="little"
target_env=""
target_family="unix"
target_feature="fxsr"
target_feature="sse"
target_feature="sse2"
target_feature="sse3"
target_feature="ssse3"
target_os="macos"
target_pointer_width="64"
target_vendor="apple"
unix
Run Code Online (Sandbox Code Playgroud)

给定SIMD ISA(AVX2或SSSE3)时,我有不同的路径,并且期望具有默认构建的非SIMD路径。

#[cfg(target_feature = "avx2")]
{
    ...
    return;
}
#[cfg(target_feature = "ssse3")]
{
    ...
    return;
}
// portable Rust code at the end
...
Run Code Online (Sandbox Code Playgroud)

这是否意味着默认发布版本将始终使用多达SSSE3指令,而不仅仅是在x86_64上强制使用的SSE2?

sse x86-64 simd rust

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