> киньте плиз исходник по сабжу. Помню, пару месяцев назад > проходил он по форуму, вроде =)) поискал в history, но не > нашел ... > спасиб! dlia VC:
tolko v Release build optimizaciu vykluchi ( ili poigraisia s nei )
void* alloc_foo(void *pFoo,void *pFooNext)
{
long *p1, *p2;
#ifdef _DEBUG
p2 = (long*)(long*)&((charpFooNext)[1] + (long)pFooNext + 5);
p1 = (long*)(long*)&((charpFoo)[1] + (long)pFoo + 5);
#else
p2 = (long*)pFooNext;
p1 = (long*)pFoo;
#endif
int size_of_function;
size_of_function = (int)p2 - (int)p1;
char *p = new char[size_of_function];
memcpy(p, p1, size_of_function);
return p;
};
void free_foo(void *pFoo)
{
delete []pFoo;
}
void FooInDataSec(void *p)
{
void* pmemcpy)(voidconst void*, size_t) = &memcpy;
pmemcpy(p, "test\0", 5);
}
void FooInDataSec_0(void *p){}
void main()
{
void pFooInDataSec)(void;
pFooInDataSec = alloc_foo(FooInDataSec, FooInDataSec_0);
char sz[5];
pFooInDataSec(sz);
free_foo( pFooInDataSec );
printf("%s", sz);
}
---
|