4 ms·
Thanks, for pointing out
by pfacka 13y ago
Thanks, for pointing out
- vinkelhake 13y agoYou suggest using 'calloc' to avoid calculating the size of the allocation (which would be necessary with 'malloc'). This is fine, and you store the number of elements in the 'size' field. But later, in the grow function, you double 'size' and then use it as-is in the call to 'realloc' which expects size to be in bytes, not elements.
- pfacka 13y agoThat is because to my knowledge we does not have something like "crealloc" to grow allocated memory effectively. Naive implementation of such function will lead always to coping memory from old to new area and effective would far more difficult to implement (thus more error prone IMHO).
- vinkelhake 13y agoHi, my point is that you have a bug in the code. Your 'newsize' is the number of elements. When you call realloc (which expects a byte size) you have to take this into account and multiply with the element size. What you have in the code: newptr = realloc(vc->data, newsize); should be changed to: newptr = realloc(vc->data, newsize * sizeof(int));