我总是使用这个malloc函数,例如,
int size = 10000;
int *a;
a = malloc(size * sizeof(int));
Run Code Online (Sandbox Code Playgroud)
我最近遇到了丢弃该sizeof(int)部分的一段代码,即
int size = 10000;
int *a;
a = malloc(size);
Run Code Online (Sandbox Code Playgroud)
第二个代码似乎工作正常.
我的问题是,哪种形式是正确的?如果是第二种形式,我是否用第一种形式分配不必要的空间.
参数to malloc是要分配的字节数.如果您需要一个n类型元素数组的空间T,请调用malloc(n * sizeof(T)).malloc不了解类型,它只关心字节.
唯一的例外是当你为(byte/char)字符串分配空间时,sizeof可以省略,因为sizeof(char) == 1在C中的定义.做类似的事情
int *a = malloc(10000);
a[9000] = 0;
Run Code Online (Sandbox Code Playgroud)
现在似乎可以工作,但实际上利用了未定义的行为.
| 归档时间: |
|
| 查看次数: |
956 次 |
| 最近记录: |