|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
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. пожалуйста, объясните что он хочет и как это исправить |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с указателями | 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 |