文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>常见内存测试题

常见内存测试题

时间:2010-04-30  来源:asteriskchina

常见的内存测试题:
试题1: void GetMemory( char *p ) {
    p = (char *) malloc( 100 );      } void Test( void ) {     char *str = NULL;     GetMemory( str );     strcpy( str, "hello world" );     printf( str );

典型的值传递,而非地址传递,只能改变形参值,不能改变其实参值。
如果要解决该问题,怎么做,下面的实例:

void GetMemory( char **p ) {
    *p = (char *) malloc( 100 );      } void Test( void ) {     char *str = NULL;     GetMemory(&str);     strcpy(str, "hello world" );     printf(str);

解决方法采用:指向指针的指针变量,传进去的str的地址,这样就可以了。

试题2: char *GetMemory( void ) {     char p[] = "hello world";     return p;     } void Test( void ) {     char *str = NULL;     str = GetMemory();     printf( str );
典型的例子,数组作为地址返回时,是指向“栈内存”的指针,内容已经被清除掉,是个野指针。
试题3:
void GetMemory( char **p, int num) {
   *p = (char *)malloc(num);      }
void Test( void ) {     char *str = NULL;     GetMemory(&str, 100);     strcpy(str, "hello");     printf(str);
错误: 1、未对申请到的内存进行判断,有可能申请未成功。 2、未释放内存
试题4:
 void Test(void) {     char *str = (char *) malloc(100);     strcpy(str, “hello”);     free(str);
 if(str != NULL)  {     strcpy(str, “world”);     printf(str);  } } 错误: 1、free str 后,str成为野指针,需要置空。 str = NULL;
试题5.判断是否为空的问题    BOOL型变量:if(!var)
   int型变量: if(var==0)
   float型变量:
   const float EPSINON = 0.00001;
   if ((x >= - EPSINON) && (x <= EPSINON)
   指针变量:  if(var==NULL)

试题6. 计算内存容量
char a[] = "hello world"; char *p = a; cout<< sizeof(a) << endl; // 12 字节 cout<< sizeof(p) << endl; // 4 字节 注意:数组作为函数的参数 void Func(char a[100]) { cout<< sizeof(a) << endl; // 4 字节而不是100 字节 }

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载