473,721 Members | 1,869 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Memory Leak in .NET 1.1

I've detected memory leaks in our huge .NET 1.1 C# application but
couldn't localize them directly. So I've reduced the code to the
following console application:

using System;
using System.IO;

namespace MemLeak
{
class MemLeak
{
[STAThread]
static void Main(string[] args)
{
try
{
throw new NullReferenceEx ception();
}
catch
{
}

for(int i=0; i<1000; i++)
{
using(StreamWri ter newMasterfile =
new StreamWriter(@" c:\XXX.tmp"))
{
newMasterfile.C lose();
}
}

Console.ReadLin e();
}
}
}

Also you have to create an "App.config " file which is distributed by
VS2003 into the application directory with the name of the application
followed by ".config". There may be any content, the file can be empty
too - this will not influence our result.

Compile the "Release" configuration and you'll see with a tool like
"NetMemoryProfi ler" that there are almost 1000 StreamWriter reserved at
"Console.ReadLi ne". You can wait as long as you want - they'll never be
freed. If you don't have such a tool: increase the number of loops.
Then you can use the task manager to see how the memory grows (look at
the virtual memory!). With an endless loop there will be an "Out of
virtual memory" error at the end.

This problem is not only bounded to StreamWriter. We've seen this for
database objects, simple strings and other.

We have tested this with several Windows XP SP2 Systems with different
configurations. Also with the latest fixes for Windows and .NET.

The funny thing: there will be no leaks when you use the "Debug"
configuration. Also you can omit the exception or the "App.config "
file. In these cases the memory will be freed correctly. But we will
comile in "Release" configuration, use the "App.config " and Exceptions
can't be avoided.

The last option is to switch the attribute "[STAThread]" to
"[MTAThread]". The memory is ok in the small example (why?) and also in
our huge application. But I'm not sure with the COM-components we use.
So I prefer the "[STAThread]" attribute.

There are some methods which you can tell the gabage collector to clean
up: "GC.GetTotalMem ory(...)", "GC.WaitForPend ingFinalizers() " and
"GC.Collect ()". You can find combinations in the small example to get
rid of the memory. But this is very unreliable and will not work
correctly in our huge application where late binding and remoting is
used.

After some days of trial and error, I am really at my wits' end over
this problem. So is there anybody who can help me?

Many thanks in advance
Martin Gaus

May 28 '06 #1
30 4695
On 28 May 2006 05:00:33 -0700, MA*****@gmx.net wrote:
I've detected memory leaks in our huge .NET 1.1 C# application but
couldn't localize them directly. So I've reduced the code to the
following console application:

using System;
using System.IO;

namespace MemLeak
{
class MemLeak
{
[STAThread]
static void Main(string[] args)
{
try
{
throw new NullReferenceEx ception();
}
catch
{
}

for(int i=0; i<1000; i++)
{
using(StreamWri ter newMasterfile =
new StreamWriter(@" c:\XXX.tmp"))
{
newMasterfile.C lose();
}
}

Console.ReadLin e();
}
}
}

Also you have to create an "App.config " file which is distributed by
VS2003 into the application directory with the name of the application
followed by ".config". There may be any content, the file can be empty
too - this will not influence our result.

Compile the "Release" configuration and you'll see with a tool like
"NetMemoryProf iler" that there are almost 1000 StreamWriter reserved at
"Console.ReadL ine". You can wait as long as you want - they'll never be
freed. If you don't have such a tool: increase the number of loops.
Then you can use the task manager to see how the memory grows (look at
the virtual memory!). With an endless loop there will be an "Out of
virtual memory" error at the end.

This problem is not only bounded to StreamWriter. We've seen this for
database objects, simple strings and other.

We have tested this with several Windows XP SP2 Systems with different
configurations . Also with the latest fixes for Windows and .NET.

The funny thing: there will be no leaks when you use the "Debug"
configuratio n. Also you can omit the exception or the "App.config "
file. In these cases the memory will be freed correctly. But we will
comile in "Release" configuration, use the "App.config " and Exceptions
can't be avoided.

The last option is to switch the attribute "[STAThread]" to
"[MTAThread]". The memory is ok in the small example (why?) and also in
our huge application. But I'm not sure with the COM-components we use.
So I prefer the "[STAThread]" attribute.

There are some methods which you can tell the gabage collector to clean
up: "GC.GetTotalMem ory(...)", "GC.WaitForPend ingFinalizers() " and
"GC.Collect()" . You can find combinations in the small example to get
rid of the memory. But this is very unreliable and will not work
correctly in our huge application where late binding and remoting is
used.

After some days of trial and error, I am really at my wits' end over
this problem. So is there anybody who can help me?

Many thanks in advance
Martin Gaus


just wondering (without trying it)

newMasterfile.C lose();
newMasterfile=n ull;

does this make any difference?
--
Ludwig Stuyck
http://www.coders-lab.be
May 28 '06 #2
using(StreamWri ter newMasterfile = new StreamWriter( @"c:\XXX.tmp " ))
{
newMasterfile.C lose();
newMasterfile = null;
}

Something like this is not possible. The compiler complains that
"newMasterf ile" is write protected. But I've tested the following with
the same result (with leaks):

StreamWriter newMasterfile = new StreamWriter( @"c:\XXX.tmp " );
newMasterfile.C lose();
newMasterfile = null;

May 28 '06 #3
There does not seem to be a memory leak here (atleast on my system) .. try
the included code .. on my system it gets up to about 8mb of memory .. then
flattens out (if there were a memory leak here I can assure you that running
10,000,000 times as opposed to 1000 would show a severe difference in memory
usage)

Most likely the garbage collector has just not collected those items yet
(and with no new items being created, and no pressure on the memory it
already has allocated why should it hurry?). Once some pressure is placed
upon it the gc seems to pick things up without issue

In your larger system my first place to look given the things you mention
would be the large object heap to see if it is growing .. if it is, whats in
it?

Cheers,

Greg Young
MVP - C#

using System;
using System.IO;

namespace MemLeak
{
class MemLeak
{
[STAThread]
static void Main(string[] args)
{
try
{
throw new NullReferenceEx ception();
}
catch
{
}

for(int i=0; i<10000000; i++)
{
using(StreamWri ter newMasterfile =
new StreamWriter(@" c:\XXX.tmp"))
{
newMasterfile.C lose();
}
}

Console.ReadLin e();
}
}
}
<MA*****@gmx.ne t> wrote in message
news:11******** **************@ j33g2000cwa.goo glegroups.com.. .
I've detected memory leaks in our huge .NET 1.1 C# application but
couldn't localize them directly. So I've reduced the code to the
following console application:

using System;
using System.IO;

namespace MemLeak
{
class MemLeak
{
[STAThread]
static void Main(string[] args)
{
try
{
throw new NullReferenceEx ception();
}
catch
{
}

for(int i=0; i<1000; i++)
{
using(StreamWri ter newMasterfile =
new StreamWriter(@" c:\XXX.tmp"))
{
newMasterfile.C lose();
}
}

Console.ReadLin e();
}
}
}

Also you have to create an "App.config " file which is distributed by
VS2003 into the application directory with the name of the application
followed by ".config". There may be any content, the file can be empty
too - this will not influence our result.

Compile the "Release" configuration and you'll see with a tool like
"NetMemoryProfi ler" that there are almost 1000 StreamWriter reserved at
"Console.ReadLi ne". You can wait as long as you want - they'll never be
freed. If you don't have such a tool: increase the number of loops.
Then you can use the task manager to see how the memory grows (look at
the virtual memory!). With an endless loop there will be an "Out of
virtual memory" error at the end.

This problem is not only bounded to StreamWriter. We've seen this for
database objects, simple strings and other.

We have tested this with several Windows XP SP2 Systems with different
configurations. Also with the latest fixes for Windows and .NET.

The funny thing: there will be no leaks when you use the "Debug"
configuration. Also you can omit the exception or the "App.config "
file. In these cases the memory will be freed correctly. But we will
comile in "Release" configuration, use the "App.config " and Exceptions
can't be avoided.

The last option is to switch the attribute "[STAThread]" to
"[MTAThread]". The memory is ok in the small example (why?) and also in
our huge application. But I'm not sure with the COM-components we use.
So I prefer the "[STAThread]" attribute.

There are some methods which you can tell the gabage collector to clean
up: "GC.GetTotalMem ory(...)", "GC.WaitForPend ingFinalizers() " and
"GC.Collect ()". You can find combinations in the small example to get
rid of the memory. But this is very unreliable and will not work
correctly in our huge application where late binding and remoting is
used.

After some days of trial and error, I am really at my wits' end over
this problem. So is there anybody who can help me?

Many thanks in advance
Martin Gaus

May 28 '06 #4
On 28 May 2006 05:25:54 -0700, "Martin" <MA*****@gmx.ne t> wrote:
using(StreamWr iter newMasterfile = new StreamWriter( @"c:\XXX.tmp " ))
{
newMasterfile.C lose();
newMasterfile = null;
}

Something like this is not possible. The compiler complains that
"newMasterfile " is write protected. But I've tested the following with
the same result (with leaks):

StreamWriter newMasterfile = new StreamWriter( @"c:\XXX.tmp " );
newMasterfile. Close();
newMasterfil e = null;


Well I tried it and used the performance monitor to monitor the
available bytes. I used a loop of 1000000000.
Result: number of available bytes decreased slowly. After 10 minutes
it went up again. After 20 minutes I see no evidence of a memory leak.
--
Ludwig Stuyck
http://www.coders-lab.be
May 28 '06 #5
With this example, why ^wouldn't^ there be a bunch of StreamWriter
objects? The way that GC works, unless there was a prior GC, those objects
will reside in memory. Just because you close them doesn't mean that the
instances are still on the heap. Only the resources that they manage which
are critical (in this case, the file handle for the underlying stream) are
released when Close is called.

Then, you call ReadLine, which uses P/Invoke ultimately. Since it is
waiting in an unmanaged piece of code (and more than likely, you are running
the CLR in a workstation configuration with the GC occuring on the executing
thread), you aren't going to be able to have a GC occur.

What you are seeing in this example is completely predictable and
expected.
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard. caspershouse.co m

<MA*****@gmx.ne t> wrote in message
news:11******** **************@ j33g2000cwa.goo glegroups.com.. .
I've detected memory leaks in our huge .NET 1.1 C# application but
couldn't localize them directly. So I've reduced the code to the
following console application:

using System;
using System.IO;

namespace MemLeak
{
class MemLeak
{
[STAThread]
static void Main(string[] args)
{
try
{
throw new NullReferenceEx ception();
}
catch
{
}

for(int i=0; i<1000; i++)
{
using(StreamWri ter newMasterfile =
new StreamWriter(@" c:\XXX.tmp"))
{
newMasterfile.C lose();
}
}

Console.ReadLin e();
}
}
}

Also you have to create an "App.config " file which is distributed by
VS2003 into the application directory with the name of the application
followed by ".config". There may be any content, the file can be empty
too - this will not influence our result.

Compile the "Release" configuration and you'll see with a tool like
"NetMemoryProfi ler" that there are almost 1000 StreamWriter reserved at
"Console.ReadLi ne". You can wait as long as you want - they'll never be
freed. If you don't have such a tool: increase the number of loops.
Then you can use the task manager to see how the memory grows (look at
the virtual memory!). With an endless loop there will be an "Out of
virtual memory" error at the end.

This problem is not only bounded to StreamWriter. We've seen this for
database objects, simple strings and other.

We have tested this with several Windows XP SP2 Systems with different
configurations. Also with the latest fixes for Windows and .NET.

The funny thing: there will be no leaks when you use the "Debug"
configuration. Also you can omit the exception or the "App.config "
file. In these cases the memory will be freed correctly. But we will
comile in "Release" configuration, use the "App.config " and Exceptions
can't be avoided.

The last option is to switch the attribute "[STAThread]" to
"[MTAThread]". The memory is ok in the small example (why?) and also in
our huge application. But I'm not sure with the COM-components we use.
So I prefer the "[STAThread]" attribute.

There are some methods which you can tell the gabage collector to clean
up: "GC.GetTotalMem ory(...)", "GC.WaitForPend ingFinalizers() " and
"GC.Collect ()". You can find combinations in the small example to get
rid of the memory. But this is very unreliable and will not work
correctly in our huge application where late binding and remoting is
used.

After some days of trial and error, I am really at my wits' end over
this problem. So is there anybody who can help me?

Many thanks in advance
Martin Gaus

May 28 '06 #6
I'm wondering why you can't approve my observations.
I've seen this on several installations now.

Just to be sure:
- it must be the "Release" configuration
- in directory "bin\Releas e" there must be an application cofiguration
file.
I have two files there:
MemoryLeak.exe
MemoryLeak.exe. config

When I start my tests the virtual memory of the process will grow in
one minute from 5MB to 17MB and so on until all the virtual memory is
completly used. There will never be a gabage collection neither when
the memory is under pressure.

May I send you my solution incl. binary?

Martin

May 28 '06 #7
And how would you explain that the problem goes away when they delete the
app.config file from the bin directory?

"Nicholas Paldino [.NET/C# MVP]" <mv*@spam.guard .caspershouse.c om> wrote in
message news:OA******** ******@TK2MSFTN GP03.phx.gbl...
With this example, why ^wouldn't^ there be a bunch of StreamWriter
objects? The way that GC works, unless there was a prior GC, those
objects will reside in memory. Just because you close them doesn't mean
that the instances are still on the heap. Only the resources that they
manage which are critical (in this case, the file handle for the
underlying stream) are released when Close is called.

Then, you call ReadLine, which uses P/Invoke ultimately. Since it is
waiting in an unmanaged piece of code (and more than likely, you are
running the CLR in a workstation configuration with the GC occuring on the
executing thread), you aren't going to be able to have a GC occur.

What you are seeing in this example is completely predictable and
expected.
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard. caspershouse.co m

<MA*****@gmx.ne t> wrote in message
news:11******** **************@ j33g2000cwa.goo glegroups.com.. .
I've detected memory leaks in our huge .NET 1.1 C# application but
couldn't localize them directly. So I've reduced the code to the
following console application:

using System;
using System.IO;

namespace MemLeak
{
class MemLeak
{
[STAThread]
static void Main(string[] args)
{
try
{
throw new NullReferenceEx ception();
}
catch
{
}

for(int i=0; i<1000; i++)
{
using(StreamWri ter newMasterfile =
new StreamWriter(@" c:\XXX.tmp"))
{
newMasterfile.C lose();
}
}

Console.ReadLin e();
}
}
}

Also you have to create an "App.config " file which is distributed by
VS2003 into the application directory with the name of the application
followed by ".config". There may be any content, the file can be empty
too - this will not influence our result.

Compile the "Release" configuration and you'll see with a tool like
"NetMemoryProfi ler" that there are almost 1000 StreamWriter reserved at
"Console.ReadLi ne". You can wait as long as you want - they'll never be
freed. If you don't have such a tool: increase the number of loops.
Then you can use the task manager to see how the memory grows (look at
the virtual memory!). With an endless loop there will be an "Out of
virtual memory" error at the end.

This problem is not only bounded to StreamWriter. We've seen this for
database objects, simple strings and other.

We have tested this with several Windows XP SP2 Systems with different
configurations. Also with the latest fixes for Windows and .NET.

The funny thing: there will be no leaks when you use the "Debug"
configuration. Also you can omit the exception or the "App.config "
file. In these cases the memory will be freed correctly. But we will
comile in "Release" configuration, use the "App.config " and Exceptions
can't be avoided.

The last option is to switch the attribute "[STAThread]" to
"[MTAThread]". The memory is ok in the small example (why?) and also in
our huge application. But I'm not sure with the COM-components we use.
So I prefer the "[STAThread]" attribute.

There are some methods which you can tell the gabage collector to clean
up: "GC.GetTotalMem ory(...)", "GC.WaitForPend ingFinalizers() " and
"GC.Collect ()". You can find combinations in the small example to get
rid of the memory. But this is very unreliable and will not work
correctly in our huge application where late binding and remoting is
used.

After some days of trial and error, I am really at my wits' end over
this problem. So is there anybody who can help me?

Many thanks in advance
Martin Gaus


May 28 '06 #8

"Greg Young" <dr************ *******@hotmail .com> wrote in message
news:uQ******** ******@TK2MSFTN GP04.phx.gbl...
There does not seem to be a memory leak here (atleast on my system)


the same here, no leak

System: Win 2003
Framework: 1.1.4322.2300
compiled in release mode, with config file in directory.
May 28 '06 #9

<MA*****@gmx.ne t> wrote in message
news:11******** **************@ j33g2000cwa.goo glegroups.com.. .
| I've detected memory leaks in our huge .NET 1.1 C# application but
| couldn't localize them directly. So I've reduced the code to the
| following console application:
|
| using System;
| using System.IO;
|
| namespace MemLeak
| {
| class MemLeak
| {
| [STAThread]
| static void Main(string[] args)
| {
| try
| {
| throw new NullReferenceEx ception();
| }
| catch
| {
| }
|
| for(int i=0; i<1000; i++)
| {
| using(StreamWri ter newMasterfile =
| new StreamWriter(@" c:\XXX.tmp"))
| {
| newMasterfile.C lose();
| }
| }
|
| Console.ReadLin e();
| }
| }
| }
|
| Also you have to create an "App.config " file which is distributed by
| VS2003 into the application directory with the name of the application
| followed by ".config". There may be any content, the file can be empty
| too - this will not influence our result.
|
| Compile the "Release" configuration and you'll see with a tool like
| "NetMemoryProfi ler" that there are almost 1000 StreamWriter reserved at
| "Console.ReadLi ne". You can wait as long as you want - they'll never be
| freed. If you don't have such a tool: increase the number of loops.
| Then you can use the task manager to see how the memory grows (look at
| the virtual memory!). With an endless loop there will be an "Out of
| virtual memory" error at the end.
|
| This problem is not only bounded to StreamWriter. We've seen this for
| database objects, simple strings and other.
|
| We have tested this with several Windows XP SP2 Systems with different
| configurations. Also with the latest fixes for Windows and .NET.
|
| The funny thing: there will be no leaks when you use the "Debug"
| configuration. Also you can omit the exception or the "App.config "
| file. In these cases the memory will be freed correctly. But we will
| comile in "Release" configuration, use the "App.config " and Exceptions
| can't be avoided.
|
| The last option is to switch the attribute "[STAThread]" to
| "[MTAThread]". The memory is ok in the small example (why?) and also in
| our huge application. But I'm not sure with the COM-components we use.
| So I prefer the "[STAThread]" attribute.
|
| There are some methods which you can tell the gabage collector to clean
| up: "GC.GetTotalMem ory(...)", "GC.WaitForPend ingFinalizers() " and
| "GC.Collect ()". You can find combinations in the small example to get
| rid of the memory. But this is very unreliable and will not work
| correctly in our huge application where late binding and remoting is
| used.
|
| After some days of trial and error, I am really at my wits' end over
| this problem. So is there anybody who can help me?
|
| Many thanks in advance
| Martin Gaus
|

The small sample you posted does not leak, nor using V1.1.4322 nor using
v2.0., with or without a config file.
Your conclusion stems from the fact that you don't really understand how the
GC works, let met explain:

1. The only point in time a GC can occur is when objects are being created
on the GC heap, when waiting on a ReadLine(), no more objects are getting
instantiated, so, no GC can ever occur as long as you are waiting for a
keybord input.
That means that the StreamWriter instances who are not yet collected at the
moment you reach ReadLine, won't be cleaned-up before the process terminates
(well, the next GC).
Now, if you simply run this program from the console and watch the 'CLR
Memory' performance counters, you will see a number of Gen0 collections
occurring while executing the loop. That means that a bunch of StreamWriter
objects will be removed from the heap, while a number of StreamWrtiter
objects are still on the heap when executing ReadLine and as I said before
they stay there until the next GC (here because of the AD unload).
If you run this with a profiler attached, the behavior changes dramatically,
the CLR switches to a less aggressive mode of GC when a
(managed)debugg er/profiler is attached, that means that it's possible that
no Gen0 collections occurred during the loop, leaving all StreamWriter
objects on the heap at the moment you reach ReadLine().
Ok, why the different behavior when there is a config file? Well, the
allocation/de-allocation scheme changed because you created a lot more
objects before you execute the loop, possibly triggering a GC run before the
loop has started and as such preventing a GC run during the loop.
Lesson learned, don't use the CLR memory profiler to monior such simple
programs, start using the non-invasive tools like perfmon to monitor your
memory allocation pattern before you start profiling using any managed
profilers, and if you do, make sure you understand what you are looking at.

2. you need to set the apartment state of the main thread to be compatible
with your COM objects requirements, seems like you don't know what they are.
When you set this to STA, be sure you never block this thread or you will
prevent the finalizer to clean-up the finalizable objects, possibly creating
a huge memory leak.

Willy.

May 28 '06 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

8
3411
by: ranjeet.gupta | last post by:
Dear All Is the Root Cause of the Memory corruption is the Memory leak, ?? suppose If in the code there is Memory leak, Do this may lead to the Memory Corruption while executing the program ? In nut shell, what is/are the realtion/s between the Memory Leak and Memory Corruption. Juts Theoritical Assumtion below:
17
4809
by: José Joye | last post by:
Hi, I have implemented a Service that is responsible for getting messages from a MS MQ located on a remote machine. I'm getting memory leak from time to time (???). In some situation, it is easier to reproduce (e.g.: remote machine not available). After about 1 day, I get a usage of 300MB of memory. I have used .NET Memory Profiler tool to try to see where the leak is located. For all the leaky instances, I can see the following (I...
4
6088
by: Don Nell | last post by:
Hello Why is there a memory leak when this code is executed. for(;;) { ManagementScope scope = new ManagementScope(); scope.Options.Username="username"; scope.Options.Password="password"; scope.Path.Path=@"\\pc\root\cimv2";
20
8112
by: jeevankodali | last post by:
Hi I have an .Net application which processes thousands of Xml nodes each day and for each node I am using around 30-40 Regex matches to see if they satisfy some conditions are not. These Regex matches are called within a loop (like if or for). E.g. for(int i = 0; i < 10; i++) { Regex r = new Regex();
23
4555
by: James | last post by:
The following code will create memory leaks!!! using System; using System.Diagnostics; using System.Data; using System.Data.SqlClient; namespace MemoryLeak
8
8548
by: Adrian | last post by:
Hi I have a JS program that runs localy (under IE6 only) on a PC but it has a memory leak (probably the known MS one!) What applications are there that I could use to look at the memory usage of each object within my JS app to help locate my problem? Thanks
7
6935
by: Salvador | last post by:
Hi, I am using WMI to gather information about different computers (using win2K and win 2K3), checking common classes and also WMI load balance. My application runs every 1 minute and reports the status of the machines. Upon we follow the .NET object lifetime recommendations the application is constantly consuming more memory! The problem is on the ManagementObjectSearch, upon we Dispose the object it seems that is not releasing the...
3
5324
by: Jim Land | last post by:
Jack Slocum claims here http://www.jackslocum.com/yui/2006/10/02/3-easy-steps-to-avoid-javascript- memory-leaks/ that "almost every site you visit that uses JavaScript is leaking memory". Anybody know anything about this? Does *Javascript* leak memeory, or does the *browser* leak memory?
7
15710
by: Ragnar Agustsson | last post by:
Hi all I have been wandering about the best way to sandbox memory leaks in 3rd party libraries when using them from the .Net framework. I have a 3rd party library, written in C++, that leaks a lot of memory but I still had to use it. 1. After using DLLImport and seeing the memory leak I tried to load and
22
9345
by: Peter | last post by:
I am using VS2008. I have a Windows Service application which creates Crystal Reports. This is a multi theaded application which can run several reports at one time. My problem - there is a memory leak someplace. I can not detect the memory leak by running several reports by hand, but when I run tha app as a servrice and process few hundred reports there is significant memory leak. The application can consume over 1GB of memory where it...
0
8727
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
9365
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
9056
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
8002
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
6664
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
4483
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
1
3186
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
2569
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
2127
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.