c - 内存分配和释放

标签 c windows winapi memory memory-leaks

是否可以通过任何 Windows API 分配 7 个字节的内存并释放前 3 个字节以形成一个 4 字节的 block 。

最佳答案

您可以使用 memmove() 将最后四个字节移动到分配 block 的开头,然后使用 realloc() 将其缩小为四个字节。

但是为什么你会想要呢?你总是可以有另一个指向分配内存的最后四个字节的指针,如下所示:

typedef unsigned char uint8;

uint8* psevenbytes = (uint8*)malloc(sizeof(uint8) * 7);

if (psevenbytes != NULL)
{
    uint8* pfourbytes = psevenbytes + 3;

    // ... do stuff

   free(psevenbytes);
   psevenbytes = NULL;
}

或者您可以使用结构

关于c - 内存分配和释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5273331/

相关文章:

Android ndk r7,Windows 上的 ffmpeg

windows - 允许在资源管理器样式的 ListView 中选择从第一列开始

c++ - dll 注入(inject) - 简单的主要

c - 如何将asin结果保存在短变量中?

C++使用系统获取PID

c - 为什么使用双变量时不会溢出?

windows - win7 pyspark sql utils IllegalArgumentException

python - 在 Windows 上以非侵入方式解锁文件

C: char 的 scanf 没有按预期工作

c - 如何在没有溢出的情况下用定点运算计算多项式?