#include <windows.h>
#define CANVAS_BLOCK_HEIGHT 10
#define CANVAS_BLOCK_WIDTH 10
#define CANVAS_PIPELINE_EXPAND 60
typedef unsigned short pixel;
struct pipe_node
{
void *object;
int x;
int y;
};
struct canvas_block
{
pixel *ptr;
struct pipe_node *pipeline;
int total_object;
int total_last;
int capability_pipeline;
};
void drawfunc_clear(pixel *ptr,int pitch,void *object,int x,int y);
void canvas_block_resize(struct canvas_block *blk);
void main()
{
pixel used=5;
pixel *ptr=&used;
drawfunc_clear(ptr,10,0,0,0);
canvas_block *ptrBlock=(canvas_block*)malloc(sizeof(pipe_node));
canvas_block_resize(ptrBlock);
}
static void drawfunc_clear(pixel *ptr,int pitch,void *object,int x,int y)
{
int i;
for (i=0;i<CANVAS_BLOCK_HEIGHT;i++)
{
size_t temp=CANVAS_BLOCK_WIDTH*sizeof(pixel);
memset(ptr,0,temp);
ptr=(pixel*)((char*)ptr+pitch);
}
}
static void canvas_block_resize(struct canvas_block *blk)
{
const int size=blk->capability_pipeline+CANVAS_PIPELINE_EXPAND;
const int newsize=size*sizeof(struct pipe_node);
blk->capability_pipeline=size;
blk->pipeline=(struct pipe_node*)realloc(blk->pipeline,newsize);
}
C 重置连续地址空间
最新推荐文章于 2021-03-16 19:57:47 发布