Не могу понять, что я делаю неправильно, исключение срабатывает при вызове функции free(packet->protocol);
.Я на Windows 7 x64 компиляции с mingw64 (gcc).
Программа получила сигнал SIGTRAP, Trap / точка останова trap.0x00000000772ef3b0 в ntdll! RtlUnhandledExceptionFilter () из C: \ Windows \ SYSTEM32 \ ntdll.dll
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
/**
* @brief
*
*/
typedef struct TCP
{
int size;
int crc;
char *protocol;
} tcp_p;
/**
* @brief Building Packet
*
* @param packet
* @return int
*/
int build_tcp_packet(tcp_p *packet)
{
assert(packet != NULL);
packet->size = 0;
packet->crc = 0;
packet->protocol = "TCP IP";
return 0;
}
/**
* @brief Free memory of Packet object
*
* @param packet
*/
void destroy_tcp_packet(tcp_p *packet)
{
assert(packet != NULL);
free(packet->protocol);//**Exception here**
free(packet);
}
/**
* @brief
*
* @return int
*/
int main(int argc, char **argv)
{
tcp_p *tcp_packet = malloc(sizeof(tcp_p));
build_tcp_packet(tcp_packet);
printf("%s\n", tcp_packet->protocol);
destroy_tcp_packet(tcp_packet);
getchar();
return 0;
}