使用Malloc在C中分配数组大小

use*_*836 1 c arrays malloc struct

在我写的程序中,我有一系列帐户(帐户是我制作的结构).我需要对程序中的所有函数和线程都可见.但是,在主要功能出来之前,我不知道它的大小.所以我创建了它:account*accounts;

并尝试使用以下方法为其分配空间:

number of accounts = 100 //for example
accounts = (account*)malloc(numberOfAccounts * sizeof (account));
Run Code Online (Sandbox Code Playgroud)

但是,它似乎将数组的大小调整为大于它需要的大小.例如,accounts[150]存在等等.

有什么我做错了吗?如何才能确切地了解帐户的大小100?谢谢

Car*_*rum 5

你不能这样做 - malloc()不提供任何关于它实际分配多少内存的保证(除非它成功,它将返回一个至少与你请求的一样多的指针).如果访问所要求范围之外的任何内容,则会导致未定义的行为.这意味着它似乎可行,但你无能为力.

顺便说一句,在C中你不需要对返回的值进行类型转换malloc().