problem with memory allocation

Поиск
Список
Период
Сортировка
От Kjetil Haaland
Тема problem with memory allocation
Дата
Msg-id 200411261556.42105.kjetil.haaland@student.uib.no
обсуждение исходный текст
Ответы Re: problem with memory allocation  (Stephan Szabo <sszabo@megazone.bigpanda.com>)
Список pgsql-novice
Hello all
Sorry for asking so many question about this topic, but i don't get it to
work. The problem is when i allocate memory for char pointers (char*). I have
a function that i run many times in my db. The first time i allocate memory
for the char* it is ok, and it is set to the length that i say it should
have. In the next round, i give a smaller input and tries to allocate memory
for this.

The first problem is when i try to print out the pointer after the allocation,
but before the insert it is what i inserted the last time i used the
function.
The second problem, coming from the first, is that it has the length from the
first allocation, not the length that i set it to have.
Here is some of the code i use:

alignres *align = (alignres *) PG_GETARG_POINTER(0);
char *first = NULL;
char *second = NULL;
int secondStart=align->secondString;

char tempBuffer[strlen(align->stringBuffer)+1];

elog(NOTICE, "before allocating:first=%s, second=%s", first, second);
first = (char*) palloc(sizeof(char)*secondStart);
second = (char*) palloc(sizeof(char)*(strlen(align->stringBuffer)
                -secondStart+1));
elog(NOTICE, "after allocating:first=%s, second=%s", first, second);
elog(NOTICE, "length: first=%d, second=%d", strlen(first), strlen(second));

snprintf(tempBuffer, sizeof(tempBuffer), "%s", align->stringBuffer);
snprintf(first, secondStart, "%s", tempBuffer);
first[strlen(first)] = '\0';

int j=0;
for(i=secondStart-1; i < (strlen(align->stringBuffer)); i++) {
    second[j] = tempBuffer[i];
    j++;
}
second[strlen(second)] = '\0';

pfree(first);
pfree(second);

I am i doing the allocation correct?
Is there any other way to free the memory so first and second is not set to
the value that the memory was last used for?

thanks
-Kjetil

В списке pgsql-novice по дате отправления:

Предыдущее
От: Bruno Wolff III
Дата:
Сообщение: Re: Converting file -Invalid data format on input DATE
Следующее
От: Bruno Wolff III
Дата:
Сообщение: Re: Querying a list field against another list