通常是一个基本问题,但也许我太愚蠢了。我尝试传递char *
作为函数参数的输出。在函数内部,我创建了一个临时char *
,我想memcpy
到我传递的地址。这是代码:
#define BLOCKSIZE=1024
int myFunction(char *s, char **out) {
int i = strlen(s);
*out = (char *)malloc(BLOCKSIZE);
char tmp[BLOCKSIZE];
strcpy(tmp, s);
tmp[++i] = 0x0f;
for(int i=strlen(s);i < BLOCKSIZE; i++) {
tmp[i] = 0xcc;
}
memcpy(*out, tmp, BLOCKSIZE);
return 0;
}
int main() {
char *s = "Hello World";
char *o = (char *)malloc(BLOCKSIZE);
myFunction(s, &o);
}
问题是,堆栈跳出函数myFunction
后会被破坏..
还有其他办法吗?
提前谢谢!
最佳,
更新:问题已解决
for循环部分i < BLOCKSIZE
必须更改为i < (BLOCKSIZE - 1)
。
答案 0 :(得分:2)
你的第一个问题是你malloc
两次,在功能之前和之中。电话外malloc
(main
的第二行)被泄露。
第二个问题(这告诉我你甚至没有编译代码)是你在定义它之前使用i
。