这似乎是一个愚蠢的问题,但我只是无法制定出一个干净的解决方案,也无法在大量其他与指针相关的问题中找到类似的问题。

我有一些动态分配的未知类型的内存,想在开始时在其中存储一个指针。由malloc返回的动态内存应适当对齐,因此我认为在写入分配的块的开头时不必担心对齐问题。

这是我的代码,可以工作,但是我将指针表示为64位整数,并希望以更干净/更方便的方式进行操作:

void *my_area = malloc(512);
void *my_pointer = get_my_pointer();
((long long *) my_area)[0] = (long long) my_pointer;

最佳答案

投射到long long只是多余的负担。强制转换为void *

void *my_area = malloc(512);
void *my_pointer = get_my_pointer();
((void **) my_area)[0] = my_pointer;


(我假设这是针对某种自由列表之类的,即您不需要同时使用该结构。)

08-05 12:57
查看更多