Yes, because the BigFloat object is instantiated/allocated in the call to _BigFloat.
If you look at the allocation profile, you will find there are two kinds of allocations; the string and the BigFloat (although the profiler can’t figure out the type here and calls it UnknownType). As you can see, they are of different size. Play with precision and observe the string allocation change size. It isn’t doubly allocated though.
Profile.Allocs.@profile for i in 1:10000000 BigFloat(;precision=2048) end
result = Profile.Allocs.fetch()
result = sort(result.allocs, by=x->x.size)
result[[begin,end]]
2-element Vector{Profile.Allocs.Alloc}:
Profile.Allocs.Alloc(Profile.Allocs.UnknownType, Base.StackTraces.StackFrame[ijl_gc_pool_alloc at libjulia-internal.1.8.dylib:?, ...], 48)
Profile.Allocs.Alloc(String, Base.StackTraces.StackFrame[ijl_alloc_string at libjulia-internal.1.8.dylib:?, ...], 256)