c语言可以动态创建函数 c++动态创建类

c语言中定义一个动态一维数组的函数,然后在主函数中使用

如果要获取内存地址,你上面那种函数获取方法是错误的.函数中int *a仅仅是主函数变量ff的一个副本,ff当初没有具体指明地址,传递给a也是不确定地址,a分配完毕,只是修改a自身指向,并不修改ff指向.所以用下面方法进行修改,采用返回地址方法

创新互联建站专注于企业成都营销网站建设、网站重做改版、仁化网站定制设计、自适应品牌网站建设、HTML5商城网站开发、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为仁化等各大城市提供网站开发制作服务。

#include stdio.h //包含头文件

#include stdlib.h

int *array1(int x)//使用返回指针能正确分配内存地址

{

int *a;

a=(int*)malloc(sizeof(int)*x);

if(a==NULL)

exit(0);

for(int i=0;ix;i++)

*(a+i)=0;

return a;

}

void main()

{

int *array1(int x);//函数声明与函数定义相一致

int *ff;

int sdof;//定义sdof

sdof=8;

ff = array1(sdof);

for(int i=0;isdof;i++)

printf("%d\n",*(ff+i));

}

在C++中如何动态创建一个函数

BOOL VirtualProtect(

LPVOID lpAddress, // address of region of committed pages

DWORD dwSize, // size of the region

DWORD flNewProtect, // desired access protection

PDWORD lpflOldProtect

// address of variable to get old protection

);

或者WriteProcessMemory(...

但是如果你发生了内存不能执行的话 你可以用这个API改变内存的属性

更直接得 你可以使用VirtualAlloc 它申请的内存可以直接设置读写执行.

#include cstdlib

#include windows.h

int main()

{

MessageBox(NULL, "我不是真的调用.", NULL, MB_OK);

char szFunText[] = {0x6A, 0x00, 0x6A, 0x00, 0x6A, 0x00, 0x6A, 0x00, 0xB8, 0x8A, 0x05, 0xD5, 0x77, 0xFF, 0xD0, 0xC3};

//PAGE_EXECUTE_READWRITE 可读可写可执行

PVOID pMem = VirtualAlloc(NULL, 1024, MEM_COMMIT, PAGE_EXECUTE_READWRITE);

memcpy(pMem, szFunText, sizeof(szFunText));

((void(*)())pMem)();

VirtualFree(pMem, 1024, MEM_RELEASE);

return 0;

}

C语言怎么动态创建函数?

C语言可以通过宏,在你需要的位置宏展开出一个新的函数。

例如:

#define XXX(funcname) \

int funcname (int arg1, int arg2) \

{ return arg1 + arg2; }

但这也是编译期就决定好了的,也不能实现运行期动态创建。


分享题目:c语言可以动态创建函数 c++动态创建类
新闻来源:http://scyanting.com/article/hpegoc.html