Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2010, 21:34   #1
оскар_топотушка
Новичок
Джуниор
 
Регистрация: 06.11.2010
Сообщений: 1
По умолчанию проблемы с указателями

есть вот такая ф-ция:
error_t argz_create_sep (const char *string, int sep, char **argz, size_t *argz_len){
char c;
int i = 0; int j = 0; int k; int str_size = strlen(string); int argz_count=0;
char ** arr_str = (char *)malloc(sizeof(char *));
char *str2;
str2 = (char *) malloc( 1 * sizeof(char));
*argz = (char **)malloc( sizeof(char*) );
*argz_len =0;

while(i <= str_size ) {
if( (string[i]!= sep) && (string[i]!='\0') ) {
str2 = (char *) realloc(str2, (strlen(str2)+1) * sizeof(char));
str2[j] = string[i];
str2[j+1] = '\0';
}
else{

k = 0;
arr_str = (char**) realloc(arr_str, (argz_count + 1)*sizeof(char *));
arr_str[argz_count] = (char *) malloc(strlen(str2)* sizeof(char));
*argz = (char **) realloc(*argz, (argz_count + 1)*sizeof(char *));
(*argz)[argz_count] = (char* ) malloc ((strlen(str2)) * sizeof(char));

for(k; k <= strlen(str2); k++)
{
(*arr_str)[argz_count][k] = str2[k];
(*argz))[argz_count][k] = str2[k];
}
argz_count += 1;
//free(str2)
str2 = (char *) malloc(sizeof(char));
j=-1;
}
i++; j++;
}
c = arr_str[1][0];
return 0;
}

Функция должна преобразовать null-terminated строку string в argz вектор разбивая строку на элементы всякий раз, когда встречается символ sep. Вектор argz есть null-terminated строка, в которой элементы разделены символом ’\0’
char **argz передается по ссылке. для тестового arr_str который я создал внутри ф-ции все вроде бы нормально работает, а с argz возникает ошибка вот здесь (*arr_str)[argz_count][k] = str2[k];
Error 9 error C2109: subscript requires array or pointer type

и ещё возникает ошибка если раскомментировать //free(str2):
---------------------------
Microsoft Visual C++ Debug Library
---------------------------
Debug Error!

Program: ...ts and Settings\Юра\Рабочий стол\Lab1last\Lab1\Debug\Lab1.exe

HEAP CORRUPTION DETECTED: after Normal block (#56) at 0x00334ED0.
CRT detected that the application wrote to memory after end of heap buffer.

пожалуйста, объясните что он хочет и как это исправить
оскар_топотушка вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с указателями Masip Общие вопросы Delphi 2 12.06.2010 12:49
Проблема с указателями 3D Hunter Общие вопросы Delphi 8 14.03.2009 06:55
Работа с указателями!!! HKBD Общие вопросы C/C++ 1 06.10.2008 07:52
проблема с указателями =\ shad0w Общие вопросы C/C++ 9 09.12.2007 03:36
Проблема с указателями novicer Общие вопросы Delphi 5 17.06.2007 00:21