Как правильно освободить память в подключенном массиве C? - PullRequest
4 голосов
/ 31 марта 2010

Я просто пытаюсь выяснить, почему в следующем коде происходит утечка памяти, и у меня странное чувство, что я неправильно освобождаю память массива. Это функция C в более широком приложении target-c, и я не являюсь родным для C ... Я пытался просто использовать free () в массиве, но у меня такое ощущение, что это не вся история ...

Может ли кто-нибудь взглянуть и увидеть, чего мне здесь не хватает. Спасибо!

CFIndex theNumberOfSettings = 3;
CTParagraphStyleSetting theSettings[3] =
{
    {kCTParagraphStyleSpecifierAlignment, sizeof(CTTextAlignment), &alignment},
    {kCTParagraphStyleSpecifierLineSpacing, sizeof(lineSpacing), &lineSpacing},
    {kCTParagraphStyleSpecifierHeadIndent, sizeof(headIndent), &headIndent}
};

CTParagraphStyleRef theParagraphRef = CTParagraphStyleCreate(theSettings, theNumberOfSettings);

CFAttributedStringSetAttribute(attrString, CFRangeMake(0, CFAttributedStringGetLength(attrString)-1), kCTParagraphStyleAttributeName, theParagraphRef);

CFRelease(theParagraphRef);
free(theSettings);

1 Ответ

12 голосов
/ 31 марта 2010

Вы не освобождаете память, которая не выделена в куче.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...