c语言中的指针转换

c语言中的指针转换,c,pointers,C,Pointers,我有以下几行: char *name = malloc(strsize + 1); 及 这是正确的吗?转换完成后,指针*名称不会被错误解释?不,转换是合法的。但是,当您尝试打印数据时,会出现问题,因为您不再有字符*。除此之外,强制转换是完全支持的。这应该不是什么大问题,除了内存的签名在访问数据和名称时会有不同的解释。在大多数实际平台中,char和uint8\u t的大小(以位为单位)是相同的。出于兴趣,您为什么不直接将malloc发送到uint8\u t*?因为我需要在某人编写的程序中找到一个

我有以下几行:

char *name = malloc(strsize + 1);


这是正确的吗?转换完成后,指针*名称不会被错误解释?

不,转换是合法的。但是,当您尝试打印
数据时,会出现问题,因为您不再有
字符*
。除此之外,强制转换是完全支持的。

这应该不是什么大问题,除了内存的签名在访问
数据
名称
时会有不同的解释。在大多数实际平台中,
char
uint8\u t
的大小(以位为单位)是相同的。

出于兴趣,您为什么不直接将malloc发送到uint8\u t*?因为我需要在某人编写的程序中找到一个巨大的漏洞(他说有漏洞)我需要找到它,我想知道这是否是。如果它们被不同的解释,你可能会访问一个你不想要的内存位置?@user6575913这是解释的数据的重要性,而不是数据的重要性pointer@user6575913示例:
数据[0]=255打印
(int)名称[0]
将产生-1。这可能会让人困惑,但在大多数实际平台中,您并没有访问任何“禁止”内存
,根据定义,sizeof char是“1”,所有平台上的sizeof(char)都是1。现在有更好的吗?
uint8_t *data;
data = (uint8_t *)name;