C言語なら、俺に聞け! <8>
■ このスレッドは過去ログ倉庫に格納されています
0128デフォルトの名無しさん
NGNGint main(void)
{
struct {
char *mem;
unsigned int memSize;
}st;
st.mem = (char *)malloc(2);
st.memSize = 2;
memset((char *)st.mem,'\0',st.memSize);
printf("Here is main \n");
printf("st.mem -> %p st.memSize -> %d \n",st.mem,st.memSize);
st.mem = reallocMemory(st.mem,&st.memSize);// ここで領域を拡大してるつもり・・・
printf("Turn back from func\n");
printf("st.mem -> %p st.memSize -> %d \n",st.mem,st.memSize);
printf("st.mem -> %s \n",st.mem);
return 0;
}
char *reallocMemory(char *target,unsigned int *size)
{
char str[409600];
memset((char *)str,'a',409600);
str[409600] = '\0';
if (*size < strlen(str)){
target = realloc(target,strlen(str)+1);
*size = strlen(str)+1;
}
strcpy (target,str);
return target; //新しいポインタを返してるつもり・・・
}
このコードを書いてテストすると、思ったように動いたのですが、
時々返ってきたポインタが変な所を指している様です。
パラメータと返り値をどちらもポインタのポインタにしたら上手くいくのですが
何処かでローカル変数を指してますでしょうか。。。。
■ このスレッドは過去ログ倉庫に格納されています