我想知道分配给指针的大小.
所以我找到了这个答案: 我怎么知道c中指针变量的分配内存大小
它有以下代码.
#include <stdlib.h>
#include <stdio.h>
void * my_malloc(size_t s)
{
size_t * ret = malloc(sizeof(size_t) + s);
*ret = s;
return &ret[1];
}
void my_free(void * ptr)
{
free( (size_t*)ptr - 1);
}
size_t allocated_size(void * ptr)
{
return ((size_t*)ptr)[-1];
}
int main(int argc, const char ** argv)
{
int * array = my_malloc(sizeof(int) * 3);
printf("%u\n", allocated_size(array));
my_free(array);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这条线(((size_t*)ptr)[-1])很完美,但我不明白为什么......
有人能帮我理解这条神奇的线条吗?谢谢!
我想在选择一个值时显示带有特定数据的标签,如我想要的演示图像中所示:

所以我粘贴此代码(在示例的源代码中找到):
protected RectF mOnValueSelectedRectF = new RectF();
@Override
public void onValueSelected(Entry e, Highlight h) {
if (e == null)
return;
RectF bounds = mOnValueSelectedRectF;
mChart.getBarBounds((BarEntry) e, bounds);
MPPointF position = mChart.getPosition(e, AxisDependency.LEFT);
Log.i("bounds", bounds.toString());
Log.i("position", position.toString());
Log.i("x-index",
"low: " + mChart.getLowestVisibleX() + ", high: "
+ mChart.getHighestVisibleX());
MPPointF.recycleInstance(position);
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用,显示日志但屏幕上没有任何反应。我忘记或错过了什么