相关疑难解决方法(0)

可以将不同的数据类型存储在C中相同的已分配内存中吗?

我想在同一个分配的内存中存储不同的数据类型,以便通过仅分配一次内存来减少执行时间.我发现实际上可以创建一个uint8_t变量数组并创建一个uint16_t指向同一内存地址的新指针,然后我可以双向读取这些值.

这允许我创建一个指针,让我们说分配内存的中间,并将值存储在后半部分的不同数据类型中.

可以这样做吗?我知道我需要关注内存边界,但这是不好的风格?

这是我的代码:

#include <stdio.h>
#include <inttypes.h>
#include <stdint.h>
#include <stdlib.h>

int main(void){
    uint8_t *array;
    uint16_t *array2;
    array = calloc(6, 1);
    array[0] = 257;

    printf("array[0]= %" PRIu8 "\n", array[0]);
    printf("array[1]= %" PRIu8 "\n", array[1]);
    printf("Adresse von array[0] = %p\n", &array[0]);
    array2 = &array[0];
    printf("Adresse auf die array2 zeigt = %p\n", array2);

    array2[0] = 257;
    printf("array2[0]= %" PRIu16 "\n", array2[0]);
    printf("array2[1]= %" PRIu16 "\n", array2[1]);
    printf("array[0]= %" PRIu8 "\n", array[0]);
    printf("array[1]= %" PRIu8 "\n", array[1]);

    getchar(); …
Run Code Online (Sandbox Code Playgroud)

c memory memory-management

10
推荐指数
1
解决办法
196
查看次数

标签 统计

c ×1

memory ×1

memory-management ×1