64,639
社区成员
发帖
与我相关
我的任务
分享
一:
void GetMemory( char *p )
{
p = (char *) malloc( 100 ); // 函数里分配内存,没有释放
}
void Test( void )
{
char *str = NULL;
GetMemory( str );
strcpy( str, "hello world" );
printf( str );
}
二:
char *GetMemory( void )
{
char p[] = "hello world"; // 返回 局部变量 指针 指向的字符串
return p; // 函数结束后就销毁了
}
void Test( void )
{
char *str = NULL;
str = GetMemory();
printf( str );
}
三:
void GetMemory( char **p, int num )
{
*p = (char *) malloc( num ); // 函数里分配内存,没有释放 //双指针就不清楚了
}
void Test( void )
{
char *str = NULL;
GetMemory( &str, 100 );//应该加上是否申请成功
strcpy( str, "hello" );
printf( str );
}
四:
void Test( void )
{
char *str = (char *) malloc( 100 );
strcpy( str, "hello" );
free( str ); // 没有取出来用就销毁了
... //省略的其它语句
}
const int SIZE = 1024 * 8;
char APPBUF[SIZE]; // 设置缓冲区 APPBUF
// 本函数完成从 分词里找最长的分词,使用缓冲区,避免了内存泄漏
char *search(const char* chbuf , const char* val)
{
char *ret = APPBUF; // 使用缓冲区,先清0
memset(ret, 0, SIZE);
char *pch = NULL;
char *funbuf = new char[strlen(chbuf)+1];
strcpy(funbuf, chbuf);
pch = strtok(funbuf, val);
while (pch != NULL) {
if (strlen(ret) < strlen(pch)) { // 获取最长的字符串单元
strcpy(ret, pch);
}
pch = strtok(NULL, val);
}
delete[] funbuf;
return ret;
}