小编Aur*_*rus的帖子

c ++为什么不存在像length(array)这样的东西?

好吧,我不认为它真的很重要,但由于程序必须存储长度因为删除[]无论如何,为什么我们不能得到这个"存储信息"?

c++ arrays language-design

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

boost :: asio threadpool vs. io_service_per_cpu design

目前我不确定,我尝试制作高性能服务器,我有一个6Core CPU,所以如果我使用"io_service_per_cpu"设计,我有6个io_service.

我已经听说线程池设计不是最好的,但我不确定.

你有什么知识?有人已经用每个或其他东西做过压力测试吗?

c++ multithreading boost boost-asio threadpool

7
推荐指数
2
解决办法
3457
查看次数

c ++堆或堆栈分配?

所以基本上这是一个堆栈分配:

char inStack[10]; 
// and 
MyStruct cl;
Run Code Online (Sandbox Code Playgroud)

这应该在堆中分配:

char* inHeap = new char[10];
// and
MyClass cl = new MyClass();
Run Code Online (Sandbox Code Playgroud)

----------------

如果MyClass包含char test[10]变量怎么办?这是否MyClass cl = new MyClass()意味着MyClass :: test的10byte长内容是在Heap而不是Stack中分配的

c++ memory heap stack

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

DirectX - VertexBuffer如何工作?

我现在正在学习DirectX,我读了很多关于VertexBuffer的内容.既然只是通过阅读就无法从编程中学习,我正在用DX11制作一个小型引擎(我的问题不是真的依赖于版本)

据我所知,在VertexBuffer中存储Vertices,实际上我将它存储在Graphic卡上.好吧,我读到了动态和静态缓冲区.所以,如果我理解正确,静态缓冲区初始化顶点,初始化顶点不会改变.好的,但我什么时候真的需要它.我的意思是在一个游戏或其他什么,我什么时候有恒定的顶点?也许对于一些UI对象..? - 但即使这些都不是每次都是不变的......你可以移动它们的2D位置......等等.

下一点是关于动态顶点缓冲区,例如:我有一个缓冲区,其中包含一些顶点,这些顶点被绘制.然后我想添加或删除一些顶点.什么现在..所以我只是"更新"缓冲区.但这是否真的对性能有益?想象一下地形编辑器.在那里你必须更新吨顶点.

c++ windows directx directx-11

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

运行时Visual C++ 10中的奇怪异常

今天我在运行时遇到了很奇怪的异常.我尝试逐步调试,但在main()调用之前发生异常.

所以我删除了每个包含和整个代码(注释它),并添加了一个空main()函数.

再次,编译后它会发生.也许一个项目配置错误?

BTW:异常后,VC10调试器进入strlen.asm并说空指针.

VS10解决方案得到了2个项目,第二个工作非常好,第一个也做了,但在我编译第二个项目后,它停止了工作.

项目具有相同的二进制输出,但是它们为每个项目获得了obj等文件的额外输出文件夹.

那么,那里有什么?

c++ runtime-error exception visual-studio-2010

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

C++ VS2010编译器不使用'push'进行简单的函数调用

我刚开始从编译器输出中学习一点汇编程序.

test(1);
Run Code Online (Sandbox Code Playgroud)

这个简单的函数调用创建以下asm输出(用x64编译)

000000013FFF2E76  mov         ecx,1  
000000013FFF2E7B  call        test (13FFF33C0h) 
Run Code Online (Sandbox Code Playgroud)

但为什么不呢:

000000013FFF2E76  push        1  
000000013FFF2E7B  call        test (13FFF33C0h) 
Run Code Online (Sandbox Code Playgroud)

我认为函数参数将是pushed堆栈然后poped在函数中.有人可以解释为什么VS更喜欢顶级的吗?

c++ compiler-construction assembly visual-studio-2010

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

OpenCL无效指针算法-奇怪的行为

我已经编写了一个OpenCL内核,该内核使用opencl-opengl互操作性来读取顶点和索引,但是这可能甚至不重要,因为我只是在做简单的指针加法操作,以便按索引获取特定的顶点。

uint pos = (index + base)*stride;
Run Code Online (Sandbox Code Playgroud)

在这里,我正在计算绝对位置(以字节为单位),在我的示例中pos是28,643,328,步幅为28,索引= 0,基数= 1,022,976。好吧,这似乎是正确的。

不幸的是,我不能vload3直接使用,因为offset参数不是以字节为单位的绝对地址。所以我只添加pos了指针void* vertices_gl

void* new_addr = vertices_gl+pos;
Run Code Online (Sandbox Code Playgroud)

new_addr 在我的示例中= 0x2f90000,这是奇怪部分开始的地方,

vertices_gl = 0x303f000


结果(new_addr)应为0x4B90000(0x303f000 + 28,643,328)

我不明白为什么地址vertices_gl减少了716,800(0xAF000)


我的目标是GPU:AMD Radeon HD5830

附言:对于那些想知道的人,我正在使用printf来获取这些值:)(无法使CodeXL工作)

pointers gpu gpgpu opencl amd-processor

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

带有模板的C++ Packet Builder

PacketBuilder是一个允许写入char*数组的类.附加功能:

template <class T>
void PacketBuilder::Append(const T value)
{
 memcpy((&m_Buffer) + m_Index, (const void*) &value, sizeof(T));
 m_Index += sizeof(T);
}
Run Code Online (Sandbox Code Playgroud)

编译没有错误.如果我调用Append并使用T作为无符号短(WORD).它很棒.如果我使用T作为unsigned char.我收到链接器错误.

m_Builder.Append<unsigned char>(0x01); // Error: LNK1120
m_Builder.Append<unsigned short>(0x0001); // Works
Run Code Online (Sandbox Code Playgroud)

来自VS2010的错误(我得到了德国vs2010):

错误LNK2019:Verweis aufnichtaufgelöstesexternes符号""public:void __thiscall PacketBuilder :: Append(unsigned char)"(?? $ Append @ E @ PacketBuilder @@ QAEXE @ Z)"在Funktion中""public:void __thiscall客户端: :DoHandshake(无效)"(?DoHandshake @ Client @@ QAEXXZ)".1> C:\ XXX\C++\SilkroadEmu\Debug\LoginServer.exe:致命错误LNK1120:1nichtaufgelösteexterneVerweise.

翻译成英文:

错误LNK2019:未解析的外部符号""public:void __thiscall PacketBuilder :: Append(unsigned char)"(?? $ Append @ E @ PacketBuilder @@ QAEXE @ Z)"in Function""public:void __thiscall Client :: DoHandshake(无效)"(?DoHandshake @ …

c++ linker-errors packet memcpy

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