c - 分配数组后,我如何知道数组中有多少个插槽?

标签 c arrays segmentation-fault malloc sizeof

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

#define MAX_NUM 65536
struct Test{
int t;
char args[16][65];

};


int main(int argc, char ** argv) {
//
struct Test *array = malloc(MAX_NUM * sizeof(struct Test*));
printf("%d", sizeof(*array));
for(int i = 0; i < sizeof(*array); i++) {
    printf("%d", i);
    printf(" ");
    array[i].t = 0;

}
array[421].t = 5;
printf("%d", array[421].t);
free(array);
return 0;

}

你好,我如何确定在 malloc 后我有多少个数组槽?当我打印 sizeof(*array) 时,我得到数字 1044,但是当我尝试运行循环并在每个槽中设置测试值时,我在段错误之前只得到 282。 sizeof 和 malloc 有什么区别?为什么我的数组的大小为 1044 时只接受最大 282 的值?为什么我可以在 421 处编辑一个插槽,但它在我的循环中出现高达 282 的段错误?谢谢

最佳答案

我想你的意思是

struct Test *array = malloc(MAX_NUM * sizeof(struct Test));

还是我遗漏了什么?

关于c - 分配数组后,我如何知道数组中有多少个插槽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21615874/

相关文章:

c - Valgrind C : Accessing by reference and unitialized value

mysql - 尝试通过以下方式将 sql 文件导入到远程数据库。程序

shell - 使用 SIGTSTP 挂起子进程后,shell 没有响应

c - 如何启动本身不是守护进程的守护进程的子进程

c - 在c中使用指针创建数组

c - 来自 printf() 的随机段错误,有人可以帮忙解释一下吗?

c - c 的另一个阶乘选项

javascript - 以数组为值对 javascript 对象进行排序

java - 如何替换数组中字符串索引的值

Python - "comparison"将一个数组映射到另一个数组的简单方法