Форум программистов, компьютерный форум CyberForum.ru

Выделение памяти под укзатель переданный функции - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ в чем моя ошибка?? http://www.cyberforum.ru/cpp-beginners/thread149433.html
вот программа на паскале: var tmp, find : real; k : real; begin k:= 1; tmp:= 1; find:= 0.5;
C++ Загвоздка С++ в общем Начнем с того что что рассмотрим простейшию Задачу) Короч написать прогу что бы выводило числа от 1 до 10 в столбик...ну Вот..и там еще нужно сделать перемножение..Когда Я Его вытворяю вся Прога Летит и не Запускаеться... Может кто Помоч? Если Можно На Примере Пож оч интересно!! http://www.cyberforum.ru/cpp-beginners/thread149432.html
C++ Создание простейшей СУБД
Мне надо написать простую СУБД, которая бы позволяла создавать, редактировать и просматривать файлы со структурами данных. Помогите пожалуйста написать функции которые бы это реализовали. Я тут начал, но не соображу как с файлами работать толком #include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> #include <iostream> #include <fstream> struct doroga {
C++ Функция округления double
Как в С++ округлить double до int? С помощью какой функции?
C++ Определить, попадает ли точка в заштрихованную область http://www.cyberforum.ru/cpp-beginners/thread149423.html
Попадает ли точка в заштрихованную область Примечание:Если точка попадает в заштрихованную область верхнего то треугольник движется по диагонали вверх и уменьшется, а если нижнего то вниз и уменьшается написать в с++ (визуальная среда)Надеюсь на вашу помощь! Вот рисунок:
C++ Одномерный массив в с++ 1.подготовить тексТовый файл с выходными данными в редакторе. 2. составить алгоритм программы 3.разбить программу на функции вывода , обработки . ввода выполнить обработку в соответствии с заданием вывести результаты на экран и дописать файл в одномерном массиве посчитать сумму элементов до минимального подробнее

Показать сообщение отдельно
TheSteelRat
0 / 0 / 0
Регистрация: 25.06.2010
Сообщений: 36
25.06.2010, 18:09     Выделение памяти под укзатель переданный функции
Доброго времени суток, форумчане!

Вот коды нужных файлов:
C++
1
2
3
4
5
//main.cpp
#include "func.h"
char *name;
char *p;
get_stream_string (&p, &name);
C++
1
2
3
//func.h
extern int get_stream_dword (char **p, DWORD *len);
extern int get_stream_string (char **p, char **var);
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//func.cpp
#include "func.h"
int get_stream_dword (char **p, DWORD *len)
//функция для получения длинны строки, которая хранится в первых четырёх битах начала потока.
{
    *len = *((DWORD*)*p);
    *p+=4;
    return 1;
}
int get_stream_string (char **p, char **var)
//функция получения строки, исходя из её длинны в потоке. p - поток, содержащий в 
//первых 4-ёх байтах длинну строки(n), а в последующих n байтах саму строку
{
    DWORD n;
        //получаем длинну строки
    get_stream_dword (p, &n);
    
        if (var)
    {
                        //выделяем память под строку найденной длинны n         
                        *var = new char[n+1];
            memcpy(*var, *p, n);
            *var[n] = 0;
    }
    *p+=n;
    return 1;
}
Задача такова: сделать так, чтоб из указателя name можно было извлеч строку.
Проблема в том, что память под указатель на указатель var, который собсно является указателем на name, не правильно как-то выделяется, программа просто вылетает без какой-либо ошибки(возможно из-за того что программа является dll и подключается к другой программе в качестве плагина). Методом научного тыка узнал, что программа вылетает на этапе присвоения последнему символу длинны строки нуля (*var[n] = 0.

В общим кто знает в чём проблема, помогите пожалуйста, буду очень благодарен.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru