小编mik*_*yko的帖子

C++确实reinterpret_cast总是返回结果?

我有两个类,A和B. A是B的父类,我有一个函数,它接受一个类型A的类的指针,检查它是否也是类型B,如果是,将调用另一个接受指向类型B的类的指针的函数.当函数调用另一个函数时,我提供reinterpret_cast(a)作为参数.如果这看起来很模糊,这里是一个代码示例:

void abc(A * a) {
  if (a->IsA("B")) { //please dont worry much about this line,
                     //my real concern is the reinterpret_cast
    def(reinterpret_cast<B *>(a));
  };
};
Run Code Online (Sandbox Code Playgroud)

所以既然你知道我如何调用"def",我想知道reinterpret_cast是否实际上返回了一个类型B的指针作为参数发送到def.我将不胜感激任何帮助.谢谢

c++ reinterpret-cast

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

在x86程序集中使用win32 api获取控制台输入

在我的汇编程序中,我AllocConsolekernel32库中调用,但是我不知道如何从分配的控制台获取输入.是否有任何winapi包含的函数将从当前程序中的已分配控制台获取输入?

CALL AllocConsole
Run Code Online (Sandbox Code Playgroud)

所有的功能,如ReadConsole都需要一个输入缓冲区,我不知道如何为我分配的控制台获取输入缓冲区,更不用说该功能是否能满足我的需求.

总而言之,winapi中是否有一个函数可以从程序中分配的控制台获取输入?

谢谢

x86 assembly winapi masm console-input

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

HeapCreate是否将堆句柄返回到EAX?

我正在使用masm汇编程序,我正在使用kernel32.lib来创建堆内存,但是在HeapCreate过程的Windows API页面上,它并没有告诉我它的返回值存储在何处.(即堆的句柄)我会假设它存储在EAX?因为大多数程序都将其返回值放入EAX.在我调用HeapCreate之后,我调用HealAlloc在我的堆中分配一些内存:

INCLUDE \masm32\include\kernel32.inc
INCLUDELIB \masm32\lib\kernel32.lib
.CODE

PUSH DWORD PTR 00h ;max size
PUSH DWORD PTR 00h ;initial size
PUSH DWORD PTR 04h ;flOption
CALL HeapCreate

PUSH DWORD PTR 04h ;dwBytes (the size in bytes)
PUSH DWORD PTR 04h ;dwFlag
PUSH EAX ;I am not sure if the heap handle is stored in EAX or not?
CALL HeapAlloc

END
Run Code Online (Sandbox Code Playgroud)

基本上,我不知道HeapCreate存储返回值的位置.如果有人能澄清在哪里,我会很感激.

谢谢

x86 assembly winapi masm heap-memory

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