?
noobLolo schrieb:
#include <stdio.h>
#include <string.h>
char * reading(char * input, int len){
char *buffer=(char*)malloc(len);
memcpy(buffer,input,len);
return buffer;
}
int main(void){
char *buffer = reading("input",sizeof("input"));
printf("%s\n",buffer);
free(buffer);
return 0;
}
Soweit OK
Habe mein Programm erweitert-> "hängt sich (wahrscheinlich wegen falscher Speicherzuweisung) auf"!
char * ReadData (int dwread)
{
DWORD dwRead = 0;
char chRead;
int ret=0,count=0;
char *buffer;
buffer=malloc(1);
ret=ReadFile(hCom, &chRead, 1, &dwRead, NULL);
while (ret!=0)
{
if (dwRead != 1)
break;
buffer=realloc(buffer,count+1);
buffer[count++] = chRead;
ret=ReadFile(hCom, &chRead, 1, &dwRead, NULL);
}
*(int*)dwread=count;
if (!ret) buffer=NULL;
return buffer;
}
char * converter(unsigned char* ucInput,int Len)
{
char *charout=malloc(Len);
char out[2];
int c;
out[0]='\0';
sprintf(charout,"Gelesen:(%d) ",Len);
for(c=0;c<=Len;c++)
{
sprintf(out,"%c",ucInput[c]);
if ((*out=='\0')||(*out=='\n')||(*out=='\r')) *out='_';
strcat(charout,out);
}
free(charout); //funktioniert so ???? komisch
return charout;
}
char * SendData(unsigned char * Unwichtig,int iLen)
{
int dwBytesRead;
int iptr=(int)&dwBytesRead;
char *cbuff;
cbuff=ReadData(iptr);
*(int*)iLen=dwBytesRead;
if (cbuff!=NULL)
{
char* extrabuff = malloc(dwBytesRead+1);
strncpy(extrabuff,cbuff,dwBytesRead);
extrabuff=converter((unsigned char*)cbuff,dwBytesRead);
SetWindowText(hwnd,extrabuff); //für Editfeld
free(extrabuff);
return cbuff;
}
}
int main(void){
char *buffer;
int Bytes;
int lenRB=(int)&Bytes;
buffer=SendData("0xff",lenRB);
printf("%c\n",buffer[Bytes-2]);
//diese funktion wird ca. 30 mal
//aufgerufen dann kommt free(buffer)
//dann wieder 30..free(.....usw
free(buffer);
return 0;
}
//Code ist etwas gekürtzt