什么是"字节";和";PBYTE"用于吗?。我在网上找不到任何信息。
#include <iostream>
#include <Windows.h>
using namespace std;
BYTE by='a';
PBYTE pby= &by;
int main(){
cout<<"by : "<<by<<endl;
cout<<"&by : "<<&by<<endl; // Why doesn't it return the memory address?
cout<<"pby : "<<pby<<endl;
cout<<"&pby: "<<&pby;
return 0;
}
The console shows:
by : a
&by : a
pby : a
&pby: 00007FF6CC10A008
我只是想知道BYTE和PBYTE是用来做什么的。我不明白。由于
BYTE,PBYTE是windows编程中非常古老的样式。例如,如果您想为图像加载程序分配堆内存,您可以写入
unsigned char* img = new unsigned char[1024 * 1024];
load_image(img, ....);
conv_image(img, ....);
但是你的手指会很累,所以你可以写
PBYTE img = new BYTE[1024 * 1024];
是的,微软在20多年前发明了这些定义类型。但是它不便携,不符合标准,会导致内存泄漏,所以在21世纪,你应该按照下面的描述来写。
auto img = make_shared<uint8_t>(1024 * 1024);
or
vector<uint8_t> v(1024 * 1024);
or
array<uint8_t, 1024 * 1024> a; // need enough stack memory
什么是"字节";和";PBYTE"用于吗?。我在网上找不到任何信息。
请看这里
BYTE A byte (8 bits).
This type is declared in WinDef.h as follows:
typedef unsigned char BYTE;
PBYTE
A pointer to a BYTE.
This type is declared in WinDef.h as follows:
typedef BYTE *PBYTE;
还有std::byte,它记录了:
std::byte是一个不同的类型,它实现了c++语言定义中指定的字节概念。像char和unsigned char一样,它可以用来访问被其他对象占用的原始内存(对象表示),但与这些类型不同的是,它不是字符类型,也不是算术类型。字节只是位的集合,并且只能为其定义按位操作符。
什么是"字节";和";PBYTE"用来做什么的?
BYTE
是unsigned char
的类型别名,PBYTE
是BYTE *
(即unsigned char *
)的类型别名。它们在WINAPI中与它们的"真实"类型-unsigned char
和指向unsigned char
的指针
在你的代码中:
cout << "&by : ";
cout << "&phy : ";
将获取内存中该字符串字面值的指针,并打印出之后的所有字符,直到它达到