分配错误的记忆

时间:2016-11-07 07:37:06

标签: c

object.position.x += vx;
var objHalfWidth = object.geometry.parameters.width / 2;
if (object.position.x + objHalfWidth >= plane.geometry.boundingBox.max.x){
    object.position.x = plane.geometry.boundingBox.max.x - objHalfWidth;
}
if (object.position.x - objHalfWidth <= plane.geometry.boundingBox.min.x){
    object.position.x = plane.geometry.boundingBox.min.x + objHalfWidth;
}

NUM_CONFIGS当前是3,printf的结果是TEST1:8,它应该是12.如果我将NUM_CONFIGS更改为30,结果再次是TEST1:8。这里有什么问题? 然后,如果我去打印数组值,它打印出来:[25,10]它应该是[25,10,3]。 如何在这种情况下释放分配的空间?

1 个答案:

答案 0 :(得分:1)

使用int* a = ...

  • sizeof(a) a所指向的已分配内存块的大小
  • sizeof(a)是指针的大小(通常为4或8个字节,具体取决于您的平台)

使用int a[NUM_CONFIGS]

  • sizeof(a)是数组的大小(即sizeof(int) * NUM_CONFIGS
  • sizeof(a)/sizeof(*a)是数组中的条目数(即NUM_CONFIGS