以下是我尝试过的,但不行.
基本上,我已经分配了内存块,我正在复制类似于数组时尚的指针,但在重试期间它不工作.虽然这适用于基本数据类型
我想在元素块中存储任何东西,它可以是整数或指针.
#include <stdio.h>#include <stdlib.h>#include <string.h>#define INDEX(x) ((char *)elements + (sizeof(int*) * (x)))int size = 10;voID f2_int_ptr() { int i = 0; voID *elements = (voID*)malloc(size * sizeof(int*)); for ( i = 0; i < size; i++ ) { int *v = ( int *) malloc ( sizeof(int)); memcpy ( v,&i,sizeof ( int )); memcpy ( INDEX(i),v,sizeof (int*)); } for ( i = 0; i < size; i++ ) { int *v = (int*)0; memcpy ( v,INDEX(i),sizeof(int *)); printf ( "%d\n",*v ); }}voID f1_int() { int i = 0; voID *elements = (voID*)malloc(size * sizeof(int)); for ( i = 0; i < size; i++ ) { memcpy ( INDEX(i),sizeof (int)); } for ( i = 0; i < size; i++ ) { int v; memcpy ( &v,sizeof ( int )); printf ( "%d\n",v ); }}int main(){ f1_int(); f2_int_ptr(); return 0;}
在上面的代码中,f1_int工作正常,但f2_int_ptr不起作用.
解决方法 f2_int_ptr()需要成为:voID f2_int_ptr() { int i = 0; voID *elements = malloc(size * sizeof(int*)); for ( i = 0; i < size; i++ ) { int *v = malloc ( sizeof(int)); memcpy ( v,sizeof ( int )); memcpy ( INDEX(i),&v,sizeof (int*)); } for ( i = 0; i < size; i++ ) { int *v; memcpy ( &v,*v ); }}
注意memcpy()参数的微妙变化.
注意:我真的,真的,不会写这样的代码!这是难以置信的.
总结以上是内存溢出为你收集整理的memcpy和指针全部内容,希望文章能够帮你解决memcpy和指针所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)