小编Fir*_*zer的帖子

什么((size_t*)ptr)[ - 1]在C中意味着什么?

我想知道分配给指针的大小.

所以我找到了这个答案: 我怎么知道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])很完美,但我不明白为什么......

有人能帮我理解这条神奇的线条吗?谢谢!

c size pointers

6
推荐指数
2
解决办法
262
查看次数

选择值时显示标签 [MPAndroidChart]

我想在选择一个值时显示带有特定数据的标签,如我想要的演示图像中所示:

我想要的图片

所以我粘贴此代码(在示例的源代码中找到):

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)

但它不起作用,显示日志但屏幕上没有任何反应。我忘记或错过了什么

android mpandroidchart

3
推荐指数
1
解决办法
4955
查看次数

标签 统计

android ×1

c ×1

mpandroidchart ×1

pointers ×1

size ×1