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?谢谢
你不能这样做 - malloc()不提供任何关于它实际分配多少内存的保证(除非它成功,它将返回一个至少与你请求的一样多的指针).如果访问所要求范围之外的任何内容,则会导致未定义的行为.这意味着它似乎可行,但你无能为力.
顺便说一句,在C中你不需要对返回的值进行类型转换malloc().
| 归档时间: |
|
| 查看次数: |
3957 次 |
| 最近记录: |