今天我花了不少时间试图弄清楚为什么一个读取文本文件的超级简单的C函数不起作用。我能够使其通过交换参数calloc
功能工作:在调用calloc函数时切换参数会发生什么?
相反的:
calloc(1, size_of_the_memory_to_allocate)
我所做的:
calloc(size_of_the_memory_to_allocate, 1)
所以不是大小20的1元,我做了20号的尺寸1.
calloc(size, 1)
分配有没有区别?
编辑2: 我想我对这个问题还不够清楚,或者它被误解了。问题是:“为什么使用calloc分配指针指针需要交换参数?”。这不是关于调试代码,我也没有要求任何人运行它,这是关于如何calloc
工作。 @chqrlie的答案正是我所期待的。我想我犯了一个错误,就是在这个问题上增加了任何代码,读者只关注它,而不是我所要求的。所以,这是一个编辑,现在chqrlie的答案非常合适。如果这仍然不会对其他用户有帮助,那就让我们删除问题并完成它。
“缓冲区未正确分配”。这有点太模糊。你究竟看到了什么? –
必须有另一个你没有发现的问题,改变程序使其他一些UB的效果变得良好。 –
提供[mcve]。例如(!):什么是“尺寸”? “常规指针”是什么意思? 'calloc'甚至不需要指针参数。 – Olaf