我試圖複製x個字節。大小被計數並打印出來(見下文)。我使用memcpy來複制計數的字節數量。但結果是我有時會得到更長的價值。哪裏不對?Memcpy副本更多,比預期
這是一些代碼:
size_t symlen = tmpP - cp;
char * triP = malloc(symlen);
printf("mallocated %zu\n", symlen) ;
memcpy (triP, tmpP - (symlen) , symlen);
printf(">>VAL %s<<\n", triP);
下面是一些輸出,你可以看到,該值越長15個字符。
mallocated 15
>>VAL 558657,1033,8144399,814<<
mallocated 15
>>VAL 558657,1033,8144399,814<<
''symlen'是否需要'printf'所需的尾部'\ 0'字符?是否有尾隨的'\ 0'? – Dirk
以'%s'打印假定這是一個以零結尾的字符串。如果這是你寫的全部,你忘了(手動!)添加終止零。 – usr2564301
什麼是tmpP,cp的類型? memcpy需要dst和src指針以及要複製的字節數,您要發送到memcpy的第二個參數是什麼?這可能是你正在閱讀垃圾數據 – Deepthought