小编das*_*man的帖子

堆栈与堆溢出检测

在像Linux这样的需求分页系统中,页面可能比我读取的大约4k,它通过检查堆栈或堆大小是否超过给予每个页面的页数来确保保护.我什么时候创建两个变量

char *s = (char *) malloc(100);   
char sa[100];
Run Code Online (Sandbox Code Playgroud)

在一个for循环中,我可以s[i] = 'c';在它出现内存错误之前写入近4000次,而使用sa[i] = 'c';EDIT:我得到一个segmentation faultstack smashing大于数组大小的错误.

我可以理解在第一种情况下有一个页面错误,它看到没有更多的页面被分配给堆,因此存在内存冲突.但是在第二种情况下会发生什么事情,gcc会在运行时为所有预分配的变量进行检查?
编辑:我发布下面的整个代码

int main(int argc,char* argv[]){
char *s = (char *) malloc(20);
char sa[400] = {0};
int i ,count;
printf(" enter the number of chars to write: ");
scanf("%d",&count);
for (i=0;i<count;i++){
printf("%d\n",i);
sa[i] = 'a';
//s[i] = 'a';
}
free(s);

}
Run Code Online (Sandbox Code Playgroud)

c memory heap stack gcc

7
推荐指数
1
解决办法
1807
查看次数

多态性 - 在派生类中更改了访问说明符

嗨,我只是想承担以下行为..我已经定义了相同的方法 - 基础中的gg()和具有不同访问权限的派生类

Class Base  
{  
// some thing   
**private** Integer gg(){  
 //return something   
 }  
}

Class Derived{  
// something  
**public** Integer gg(){  
//return something  
}  
}
Run Code Online (Sandbox Code Playgroud)

在我初始化变量的主要方法中

  Base d = new Derived()  
Run Code Online (Sandbox Code Playgroud)

并试图调用d.gg()它说Base.gg()是私有的.修改访问说明符是否使方法调用恢复为Base类方法?当我将基类中的gg()的访问指定符更改为public时,它就像多态一样调用Derived类中的方法.

从我读到的有关多态性的内容来看,可以使派生说明符在派生类中的限制性更低,这就是这里的情况.

java polymorphism

1
推荐指数
1
解决办法
859
查看次数

Shell脚本输入

#!/bin/sh 

if test -n $1  
then  
  echo "Some input entered"  
  echo $1  
else  
  echo "no input entered"  
fi
Run Code Online (Sandbox Code Playgroud)

如果我没有将参数传递给shell脚本,上面的代码应该说"没有输入".当我不传递任何参数时,echo $ 1显示一个空行.即使没有任何争论,它也说"输入了一些信息".

unix shell

1
推荐指数
1
解决办法
2145
查看次数

Ruby regex基于否定返回匹配

我只想捕获nbnbaasd<sd其中出现的字符串部分a.

我希望它nbnb作为比赛返回.

 /.+(?!a)/.match("nbnbaasd<sd") # returns the whole string
Run Code Online (Sandbox Code Playgroud)

ruby regex

0
推荐指数
1
解决办法
1030
查看次数

标签 统计

c ×1

gcc ×1

heap ×1

java ×1

memory ×1

polymorphism ×1

regex ×1

ruby ×1

shell ×1

stack ×1

unix ×1