提问人:施凱翔 提问时间:11/3/2023 更新时间:11/3/2023 访问量:60
当我在结构中使用数组时,我遇到了一些奇怪的事情 [duplicate]
When I use an array inside a struct, I encounter some strange thing [duplicate]
问:
当我运行以下代码时:
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
struct BC_messages {
uint16_t hz;
uint16_t counter;
uint16_t data[];
};
struct BC_messages* createMessage(struct BC_messages* m, uint16_t hz,
uint16_t counter, int a)
{
m = malloc(sizeof(*m) + sizeof(uint16_t) * a);
m->hz = hz;
m->counter = counter;
return m;
}
int main()
{
struct BC_messages* m1 = createMessage(m1, 2, 4, 6);
m1->data[7] = 0xCCCC;
printf("%d" , m1->data[7]);
return 0;
}
为什么数组长度为 6 时可以访问?
我甚至可以访问,这是怎么回事?m1->data[7]
m1->data[1234]
我期望当阵列超出范围时无法访问该阵列。
答: 暂无答案
评论