Leak or overlap

W!†A_cRaft

Ultra Cool Member
Reaction score
28
Would this leak or overlap the data? Since i did not remove the 1st temp_point before setting another, though it should have just replaced the one used before yes?

Trigger:
  • Untitled Trigger 001
    • Events
    • Conditions
    • Actions
      • Set Temp_Point = (Center of (Playable map area))
      • Unit - Create 1 Footman for Player 1 (Red) at Temp_Point facing Default building facing degrees
      • Set Temp_Point = ((Center of (Playable map area)) offset by (150.00, 100.00))
      • Custom Script: call RemoveLocation(udg_Temp_Point)
 

Nenad

~Choco Coronet~ Omnomnom
Reaction score
137
I would remove the tempPoint after each use, just in case (you lose nothing by doing so ^^)
 

Wratox1

Member
Reaction score
22
that leaks, since you do not remove the first point you set, you have to remove it after you have created the unit;)
 

Endurance

New Member
Reaction score
2
As to the Question:

- Yes, the Variable is replaced.
- No, it does leak. Either destory the location after use, or use integers.
 

W!†A_cRaft

Ultra Cool Member
Reaction score
28
so correct me if i am wrong here:

when i make a variable Temp_point it tells the compiler/assembler that i want to allocate a space in memory for later use, now I set the (center of playable map area) to be held as information inside this allocated space.

Next, i do not free space, i just tell it to get different data into it, thus basically erasing what was already in it, why does this leak? New space in memory was never alocated
 

Endurance

New Member
Reaction score
2
Next, i do not free space, i just tell it to get different data into it, thus basically erasing what was already in it, why does this leak? New space in memory was never alocated

You said it, you do not free any space. Overriding not equal to erasing.
 

W!†A_cRaft

Ultra Cool Member
Reaction score
28
how come? if i take the same space in the memory and override it, the data that was there before is never reachable again but the new data does not occupy new space, it uses the one from before thus the "old" data doesn't leak it is in fact gone, no?

for example, when i start a map i am using up 50 MB of space on RAM, with 1231231231123131 runs of this trigger i'd again use only 50 MB of ram, no new allocating has been done
 

Endurance

New Member
Reaction score
2
This is pretty interesting, indeed.
Yet again, I would clear the temp variable before I assign a new value.
Whether it leaks or not, we could keep on debating for hours. :nuts:
From my point of view, it would be "better" to clean up the leak and re-assign. :thup:
 

W!†A_cRaft

Ultra Cool Member
Reaction score
28
Will tend to do that i was just interested in if it does leak or not :p
Because it is really giving me a freaking :banghead::banghead::banghead:
 

Endurance

New Member
Reaction score
2
I am not really familiar to the Wc3 Engine, thus I can only speculate.
Overlapping variables in c++ leaks, because they are stored into the memory.
 

Sgqvur

FullOfUltimateTruthsAndEt ernalPrinciples, i.e shi
Reaction score
62
>with 1231231231123131 runs of this trigger i'd again use only 50 MB of ram, no new allocating has been done

The execution of this trigger creates creates 3 locations(points), 1 unit then frees the last location(created in the OffsetLocation see below). You need to "expand"(convert to custom text) the GUI to look what's happening underneath the hood.

In fact the location constructor is called 3 times: 2 by Center Of function(GetRectCenter) and 1 time in the OffsetLocation function.

Your last line of code removes only the last location that was returned by the OffsetLocation function

You would need to use 2 location to properly "free" memory.

Trigger:
  • Untitled Trigger 001
    • Events
    • Conditions
    • Actions
      • Set temp_loc = (Center of (Playable map area))
      • Unit - Create 1 Footman for Player 1 (Red) at temp_loc facing Default building facing degrees
      • Custom script: call RemoveLocation(udg_temp_loc)
      • Set temp_loc2 = (Center of (Playable map area))
      • Set temp_loc = (temp_loc2 offset by (150.00, 100.00))
      • Custom script: call RemoveLocation(udg_temp_loc)
      • Custom script: call RemoveLocation(udg_temp_loc2)


Note that the example leaks a unit : )
 

W!†A_cRaft

Ultra Cool Member
Reaction score
28
>with 1231231231123131 runs of this trigger i'd again use only 50 MB of ram, no new allocating has been done

The execution of this trigger creates creates 3 locations(points), 1 unit then frees the last location(created in the OffsetLocation see below). You need to "expand"(convert to custom text) the GUI to look what's happening underneath the hood.

In fact the location constructor is called 3 times: 2 by Center Of function(GetRectCenter) and 1 time in the OffsetLocation function.

Your last line of code removes only the last location that was returned by the OffsetLocation function

You would need to use 2 location to properly "free" memory.

Trigger:
  • Untitled Trigger 001
    • Events
    • Conditions
    • Actions
      • Set temp_loc = (Center of (Playable map area))
      • Unit - Create 1 Footman for Player 1 (Red) at temp_loc facing Default building facing degrees
      • Set temp_loc2 = (Center of (Playable map area))
      • Set temp_loc = (temp_loc2 offset by (150.00, 100.00))
      • Custom script: call RemoveLocation(udg_temp_loc)
      • Custom script: call RemoveLocation(udg_temp_loc2)


Note that the example leaks a unit : )


yea yea, we were only focusing on discussing a Temp_loc leak, offset leaks and unit leaks but that wasn't the point :D

I was just interested in if the trigger would leak if i override the data without removing it before.
 

luorax

Invasion in Duskwood
Reaction score
67
I'm not a C++ expert (I still learn it), so correct me if i know something wrong:
-when you call "local location tl" then it creates a new pointer ( tl = new location; ), what's a NULL pointer basically
-when you set it's value to someting (like tl = Location(X,Y), then it creates a new location type variable, and make the "tl" variable (pointer) to point to the new location
-when you create a new Location, and make the "tl" variable, to point to the new location, then the old location's still in the memory, and because we've lost it's address, we're unavailable, to remove it. So it'll leak, and we're unavailable to remove it. That's why we need to remove the location, or create a new variable (pointer) to store it's address.

But this's my opinion. As i said, i'm a "student" not an expert.
 

Accname

2D-Graphics enthusiast
Reaction score
1,463
what luorax said is correct. basically this is the very same procedere like in any programming language but the most of todays scripting languages use some kind of build in garbage collection which takes care of leaking objects. they would be auto-removed. but not in wc3.
 

Ashlebede

New Member
Reaction score
43
most of todays scripting languages use some kind of build in garbage collection which takes care of leaking objects

Read : JavaScript, Lua, ActionScript & pretty much every high-level programming language. When a variable that pointed to an object changes value, it will be checked whether or not it was the last pointer towards that object. If it was, it will be eligible for garbage collection. In GUI/Jass, you have to garbage-collect it yourself. It is not a high-level language like the above.
 

Accname

2D-Graphics enthusiast
Reaction score
1,463
@Ashlebede:
wasnt that exactly what i said? if not that was what i meant.
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • Ghan Ghan:
    Howdy
  • Ghan Ghan:
    Still lurking
    +3
  • The Helper The Helper:
    I am great and it is fantastic to see you my friend!
    +1
  • The Helper The Helper:
    If you are new to the site please check out the Recipe and Food Forum https://www.thehelper.net/forums/recipes-and-food.220/
  • Monovertex Monovertex:
    How come you're so into recipes lately? Never saw this much interest in this topic in the old days of TH.net
  • Monovertex Monovertex:
    Hmm, how do I change my signature?
  • tom_mai78101 tom_mai78101:
    Signatures can be edit in your account profile. As for the old stuffs, I'm thinking it's because Blizzard is now under Microsoft, and because of Microsoft Xbox going the way it is, it's dreadful.
  • The Helper The Helper:
    I am not big on the recipes I am just promoting them - I use the site as a practice place promoting stuff
    +2
  • Monovertex Monovertex:
    @tom_mai78101 I must be blind. If I go on my profile I don't see any area to edit the signature; If I go to account details (settings) I don't see any signature area either.
  • The Helper The Helper:
    You can get there if you click the bell icon (alerts) and choose preferences from the bottom, signature will be in the menu on the left there https://www.thehelper.net/account/preferences
  • The Helper The Helper:
    I think I need to split the Sci/Tech news forum into 2 one for Science and one for Tech but I am hating all the moving of posts I would have to do
  • The Helper The Helper:
    What is up Old Mountain Shadow?
  • The Helper The Helper:
    Happy Thursday!
    +1
  • Varine Varine:
    Crazy how much 3d printing has come in the last few years. Sad that it's not as easily modifiable though
  • Varine Varine:
    I bought an Ender 3 during the pandemic and tinkered with it all the time. Just bought a Sovol, not as easy. I'm trying to make it use a different nozzle because I have a fuck ton of Volcanos, and they use what is basically a modified volcano that is just a smidge longer, and almost every part on this thing needs to be redone to make it work
  • Varine Varine:
    Luckily I have a 3d printer for that, I guess. But it's ridiculous. The regular volcanos are 21mm, these Sovol versions are about 23.5mm
  • Varine Varine:
    So, 2.5mm longer. But the thing that measures the bed is about 1.5mm above the nozzle, so if I swap it with a volcano then I'm 1mm behind it. So cool, new bracket to swap that, but THEN the fan shroud to direct air at the part is ALSO going to be .5mm to low, and so I need to redo that, but by doing that it is a little bit off where it should be blowing and it's throwing it at the heating block instead of the part, and fuck man
  • Varine Varine:
    I didn't realize they designed this entire thing to NOT be modded. I would have just got a fucking Bambu if I knew that, the whole point was I could fuck with this. And no one else makes shit for Sovol so I have to go through them, and they have... interesting pricing models. So I have a new extruder altogether that I'm taking apart and going to just design a whole new one to use my nozzles. Dumb design.
  • Varine Varine:
    Can't just buy a new heatblock, you need to get a whole hotend - so block, heater cartridge, thermistor, heatbreak, and nozzle. And they put this fucking paste in there so I can't take the thermistor or cartridge out with any ease, that's 30 dollars. Or you can get the whole extrudor with the direct driver AND that heatblock for like 50, but you still can't get any of it to come apart
  • Varine Varine:
    Partsbuilt has individual parts I found but they're expensive. I think I can get bits swapped around and make this work with generic shit though
  • Ghan Ghan:
    Heard Houston got hit pretty bad by storms last night. Hope all is well with TH.
  • The Helper The Helper:
    Power back on finally - all is good here no damage
    +2
  • V-SNES V-SNES:
    Happy Friday!
    +1

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top