Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory 清晰的记忆_Memory_Lua - Fatal编程技术网

Memory 清晰的记忆

Memory 清晰的记忆,memory,lua,Memory,Lua,我正在Lua内部制作一个简单的数字破解程序,我遇到了一个“堆栈溢出”错误(哦,很讽刺)。我不是100%的错误,因为当我用谷歌搜索它时,我得到的只是这个我已经使用了一段时间的网站。我想有一种方法来清除lua文件中的内存。这个程序运行数字非常快,它可以运行这些数字多达2147483647次,所以我假设这是一个内存问题。那么,有没有一种方法可以在运行lua脚本的同时清除该脚本中的内存呢?这是我的密码: num = 0 rand = math.random(2147483647) function Ma

我正在Lua内部制作一个简单的数字破解程序,我遇到了一个“堆栈溢出”错误(哦,很讽刺)。我不是100%的错误,因为当我用谷歌搜索它时,我得到的只是这个我已经使用了一段时间的网站。我想有一种方法来清除lua文件中的内存。这个程序运行数字非常快,它可以运行这些数字多达2147483647次,所以我假设这是一个内存问题。那么,有没有一种方法可以在运行lua脚本的同时清除该脚本中的内存呢?这是我的密码:

num = 0
rand = math.random(2147483647)
function Main()
    print ("Please enter your number(0 - 2147483647)")
    ui = io.read("*number")
    loop()
end
function loop()
    if rand > ui and rand ~= ui then
        rand = math.random(0, ui)
        num = num + 1
        print(rand)
    end
    if rand < ui and rand ~= ui then
        rand = math.random(ui, 2147483647)
        num = num + 1
        print(rand)
    end
    if ui ~= rand then
        loop()
    end
    if ui == rand then
        print("Number Cracked - " ..ui)
        print("It Took " ..num .." Trys To Crack Your Number")
        done = io.read()
    end
end
Main()
num=0
rand=math.random(2147483647)
函数Main()
打印(“请输入您的号码(0-2147483647)”)
ui=io.read(“*编号”)
循环()
结束
函数循环()
如果rand>ui和rand~=ui,那么
rand=math.random(0,用户界面)
num=num+1
打印(兰特)
结束
如果rand
编辑


感谢@Marc B和@Blaatz0r对答案的注释,我多次调用loop(),它导致了“堆栈溢出”,我将其替换为while循环,感谢@Marc B,这是我的新代码:

num = 0
rand = math.random(2147483647)
function Main()
print ("Please enter your number(0 - 2147483647)")
ui = io.read("*number")
while( ui ~= rand) do
if rand > ui and rand ~= ui then
rand = math.random(0, ui)
num = num + 1
print(rand)
end
if rand < ui and rand ~= ui then
rand = math.random(ui, 2147483647)
num = num + 1
print(rand)
end
if ui == rand then
print("Number Cracked - " ..ui)
print("It Took " ..num .." Trys To Crack Your Number")
done = io.read()
end
end
end
Main()
num = 0
rand = math.random(2147483647)
function Main()
    print ("Please enter your number(0 - 2147483647)")
    ui = io.read("*number")
    while( ui ~= rand) do
        if rand > ui and rand ~= ui then
            rand = math.random(0, ui)
            num = num + 1
            print(rand)
        end
        if rand < ui and rand ~= ui then
            rand = math.random(ui, 2147483647)
            num = num + 1
            print(rand)
        end
        if ui == rand then
            print("Number Cracked - " ..ui)
            print("It Took " ..num .." Trys To Crack Your Number")
            done = io.read()
        end
    end
end
Main()
num=0
rand=math.random(2147483647)
函数Main()
打印(“请输入您的号码(0-2147483647)”)
ui=io.read(“*编号”)
而(ui~=rand)呢
如果rand>ui和rand~=ui,那么
rand=math.random(0,用户界面)
num=num+1
打印(兰特)
结束
如果rand
感谢@Marc B和@Blaatz0r对答案的注释,我多次调用loop(),结果导致“堆栈溢出”,我将其替换为while循环,感谢@Marc B,这是我的新代码:

num = 0
rand = math.random(2147483647)
function Main()
print ("Please enter your number(0 - 2147483647)")
ui = io.read("*number")
while( ui ~= rand) do
if rand > ui and rand ~= ui then
rand = math.random(0, ui)
num = num + 1
print(rand)
end
if rand < ui and rand ~= ui then
rand = math.random(ui, 2147483647)
num = num + 1
print(rand)
end
if ui == rand then
print("Number Cracked - " ..ui)
print("It Took " ..num .." Trys To Crack Your Number")
done = io.read()
end
end
end
Main()
num = 0
rand = math.random(2147483647)
function Main()
    print ("Please enter your number(0 - 2147483647)")
    ui = io.read("*number")
    while( ui ~= rand) do
        if rand > ui and rand ~= ui then
            rand = math.random(0, ui)
            num = num + 1
            print(rand)
        end
        if rand < ui and rand ~= ui then
            rand = math.random(ui, 2147483647)
            num = num + 1
            print(rand)
        end
        if ui == rand then
            print("Number Cracked - " ..ui)
            print("It Took " ..num .." Trys To Crack Your Number")
            done = io.read()
        end
    end
end
Main()
num=0
rand=math.random(2147483647)
函数Main()
打印(“请输入您的号码(0-2147483647)”)
ui=io.read(“*编号”)
而(ui~=rand)呢
如果rand>ui和rand~=ui,那么
rand=math.random(0,用户界面)
num=num+1
打印(兰特)
结束
如果rand
感谢@Marc B和@Blaatz0r对答案的注释,我多次调用loop(),结果导致“堆栈溢出”,我将其替换为while循环,感谢@Marc B,这是我的新代码:

num = 0
rand = math.random(2147483647)
function Main()
print ("Please enter your number(0 - 2147483647)")
ui = io.read("*number")
while( ui ~= rand) do
if rand > ui and rand ~= ui then
rand = math.random(0, ui)
num = num + 1
print(rand)
end
if rand < ui and rand ~= ui then
rand = math.random(ui, 2147483647)
num = num + 1
print(rand)
end
if ui == rand then
print("Number Cracked - " ..ui)
print("It Took " ..num .." Trys To Crack Your Number")
done = io.read()
end
end
end
Main()
num = 0
rand = math.random(2147483647)
function Main()
    print ("Please enter your number(0 - 2147483647)")
    ui = io.read("*number")
    while( ui ~= rand) do
        if rand > ui and rand ~= ui then
            rand = math.random(0, ui)
            num = num + 1
            print(rand)
        end
        if rand < ui and rand ~= ui then
            rand = math.random(ui, 2147483647)
            num = num + 1
            print(rand)
        end
        if ui == rand then
            print("Number Cracked - " ..ui)
            print("It Took " ..num .." Trys To Crack Your Number")
            done = io.read()
        end
    end
end
Main()
num=0
rand=math.random(2147483647)
函数Main()
打印(“请输入您的号码(0-2147483647)”)
ui=io.read(“*编号”)
而(ui~=rand)呢
如果rand>ui和rand~=ui,那么
rand=math.random(0,用户界面)
num=num+1
打印(兰特)
结束
如果rand
您只需不断地调用loop()。。。最终,您将溢出堆栈。为什么首先必须是递归的?
while
循环不是更有效吗?它一直在调用loop()。因此,所有这些调用都设置为堆栈。随着时间的推移,它会泛滥。因此,堆栈溢出。您应该尝试查找有关堆栈与堆的一些信息。谢谢你们两位:D我让我的代码工作了,现在我可以整天盯着滚动的数字看,谢谢:D注意,你不必重写整个代码作为一个while循环来解决这个问题。Lua有适当的尾部调用(),因此您可以将对
loop()
的递归调用替换为
return loop()
。。。最终,您将溢出堆栈。为什么首先必须是递归的?
while
循环不是更有效吗?它一直在调用loop()。因此,所有这些调用都设置为堆栈。随着时间的推移,它会泛滥。因此,堆栈溢出。您应该尝试查找有关堆栈与堆的一些信息。谢谢你们两位:D我让我的代码工作了,现在我可以整天盯着滚动的数字看,谢谢:D注意,你不必重写整个代码作为一个while循环来解决这个问题。Lua有适当的尾部调用(),因此您可以将对
loop()
的递归调用替换为
return loop()
。我认为这里的标题有点误导