sizeof (data_chunk) даст вам размер типа данных data_chunk, он такой же, как sizeof (char *). Не существует функции, которая выдаст вам размер блока памяти, выделенного malloc, просто замените его на CHUNK_SIZE вместо полных блоков и частичных_чанков ниже, т. Е.:
total_chunks = size / CHUNK_SIZE;
partial_chunks = size % CHUNK_SIZE;
int write_fd = open("test3.txt",O_CREAT|O_WRONLY,0777);
if(fd != -1)
{
if(total_chunks >= 1)
{
data_chunk = (char *)malloc(sizeof(char) * CHUNK_SIZE);
for(iteration = 0;iteration <total_chunks;iteration++)
{
read(fd,data_chunk,CHUNK_SIZE);
write(write_fd,data_chunk,CHUNK_SIZE);
}
free(data_chunk);
}
if(partial_chunks != 0)
{
data_chunk = (char *)malloc(sizeof(char) * partial_chunks);
read(fd,data_chunk,partial_chunks);
write(write_fd,data_chunk,partial_chunks);
}
close(fd);
close(write_fd);
}