Добавление одной простой строки в программу C ++ почти удваивает размер текстаC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Добавление одной простой строки в программу C ++ почти удваивает размер текста

Сообщение Anonymous »

Я создаю программу для микроконтроллера (RISC-V, если это имеет значение), и я столкнулся с проблемой с недостатком. У меня есть какой -то код, который компилируется на «текстовый» размер 6592 байтов. Но если я добавлю одну строку: < /p>

Код: Выделить всё

*buf++ = 0
< /code>
Размер текста изменяется на 10816. Это происходит только в том случае, если я добавляю эту строку в определенное место в определенной функции. Изображение), ни один из которых, кажется, не имеет никакого отношения к линии, которую я добавил. Именно эти дополнительные функции добавляют дополнительное использование памяти с объемным, исходящим от DivDF3 (0x6b4) и addDF3 (0x708). < /P>
Я понимаю, что, вероятно, недостаточно информации, чтобы решить эту проблему, но, возможно, кто -то может предложить, что может произойти и где посмотреть. Ресурс. Некоторые из кода были прокомментированы, потому что я пытался именно изолировать, что именно в этой функции вызвало внезапное увеличение. Строка 49 является рассматриваемой строкой. Если я прокомментирую эту строку и не сделаю никаких других изменений в программу размер «текста» значительно падает. < /P>
#include "Robot.h"
#include "Util.h"

void dtoa(char * buf, double value, int decimals)
{
if (decimals > MAX_DTOS_DECIMALS)
{
decimals = MAX_DTOS_DECIMALS;
}

if (value < 0)
{
*buf++ = '-';
value = -value;
}

if (value > 9223372036854775807.0)
{
*buf++ = '*';
}
else
{
double avg = 0.5;
for (int i = 0 ; i < decimals ; i++)
{
avg /= 10;
}
value += avg;

uint64_t iValue = (uint64_t) value;

if (iValue == 0)
{
// *buf++ = '0';
}
else
{
int i;
char digits[20];

for (i = 0 ; (iValue != 0) && (i < (int) sizeof(digits)) ; i++)
{
digits[i] = (iValue % 10) + '0';
iValue /= 10;
}

// for (--i ; i >= 0 ; i--)
{
*buf++ = 0;//digits[i];  

Подробнее здесь: [url]https://stackoverflow.com/questions/79643206/adding-a-single-simple-line-to-a-c-program-almost-doubles-the-size-of-the-text[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»