473,387 Members | 1,348 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,387 software developers and data experts.

C runtime errors. desperately needing help.

my program compiles without problems but when i try to run it pauses shortly and then crashes. When i set it to debug it came up with the following message:

"An Access Violation (Segmentation Fault) raised in your program."

Ill put my code below. can anyone see why it is doing this?

Expand|Select|Wrap|Line Numbers
  1.  /* Program Function: Reads in data on a boolean matrix (/s) and outputs
  2.  *         whether the file has parity, is corrupt or the coordinates of the bit
  3.  *         we can change to give it parity.
  4.  *
  5.  -----------------------------------------------------------------------------*/
  6.  
  7.  
  8.  
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11. #include <malloc.h>
  12.  
  13.  
  14.  
  15. /*----------------------------------------------------------------------------*/
  16.  
  17. // Sets values in place of booleans.
  18. #define TRUE 1
  19. #define FALSE 0
  20.  
  21. // Numbers of uneven rows / columns in a matrix for the properties.
  22. #define PARITY 1
  23. #define CHANGE 2
  24. #define CORRUPT 3
  25. #define INIT 0
  26. #define FILENAMEL 100
  27.  
  28.  
  29.  
  30. /*----------------------------------------------------------------------------*/
  31.  
  32.  
  33. void readMatrix(FILE *fp, int **matrixPointer, int &rows, int &columns, int &end);
  34. int **setMem(int **matrixPointer, int rows, int columns);
  35. int testRows(int **matrixPointer, int &rowLocation, int rows, int columns);
  36. int testColumns(int **matrixPointer, int &columnsLocation, int rows, int columns);
  37. void outputResults(int rowUnevens, int columnUnevens, int columnLocation, int rowLocation);
  38. void freeMem(int **matrixPointer, int rows, int columns);
  39.  
  40.  
  41. /*----------------------------------------------------------------------------*/
  42.  
  43.  
  44. int main(int argc, char **argv)
  45. {
  46.     int matrixNumber = INIT;
  47.     int rows = INIT;
  48.     int columns = INIT;
  49.     int rowLocation = INIT;
  50.     int columnLocation = INIT;
  51.  
  52.     int end = FALSE;
  53.  
  54.     FILE *fp = NULL;
  55.  
  56.     int **matrixPointer = NULL;
  57.  
  58.     do
  59.     {
  60.            matrixNumber++;
  61.  
  62.            readMatrix(fp, matrixPointer, rows, columns, end);
  63.  
  64.            if (end != TRUE)
  65.            {
  66.                 int rowUnevens = testRows(matrixPointer, rowLocation, rows, columns);
  67.                 int columnUnevens = testColumns(matrixPointer, columnLocation, rows, columns);
  68.  
  69.                 printf("%d) \n", matrixNumber);
  70.                 outputResults(rowUnevens, columnUnevens, columnLocation, rowLocation);
  71.  
  72.            }           
  73.            freeMem(matrixPointer, rows, columns);
  74.  
  75.     }while(!feof(fp));
  76.  
  77.     return 0;   
  78. }
  79.  
  80.  
  81.  
  82. /*----------------------------------------------------------------------------*/
  83.  
  84.  
  85.  
  86. void readMatrix(FILE *fp, int **matrixPointer, int &rows, int &columns, int &end)
  87. {
  88.      char fileName[FILENAMEL]; // Character array for file-name string.   
  89.      fp = fopen(fileName, "r"); // Opens file with given name in 'read-only'.
  90.  
  91.      if(!feof(fp))
  92.      {
  93.             end = FALSE;      
  94.  
  95.             /* Reads numbers from file for values of 'rows' and 'columns' on the first 
  96.                line of input. */
  97.                fscanf(fp, "%d", &rows);
  98.                fscanf(fp, "%d", &columns);
  99.  
  100.                 // Allocates the memory for the matrixPointer array.
  101.                 matrixPointer = setMem(matrixPointer, rows, columns);
  102.  
  103.                 for(int index1 = INIT; index1 < rows; index1++)// Loops through rows.
  104.                 {
  105.                      for (int index2 = INIT; index2 < columns; index2++) // Loops through columns.
  106.                      {
  107.                          /* Inputs value at that point of file and stores in appropriate
  108.                             point in the matrix array according to current index. */
  109.                         fscanf(fp, "%d", &matrixPointer[index1][index2]);
  110.                       }
  111.                 }
  112.      }
  113.      else
  114.      {
  115.          end = TRUE;
  116.      }
  117.  
  118.  return;   
  119. }
  120.  
  121.  
  122. /*----------------------------------------------------------------------------*/
  123.  
  124.  
  125.  
  126. int **setMem(int **matrixPointer, int rows, int columns)
  127. {
  128.     // Allocate memory for each row.
  129.     *matrixPointer = (int *)calloc(rows, sizeof(int *));
  130.  
  131.     // Allocate memory for each columns within each row. 
  132.     for (int index1 = INIT; index1 < rows; index1++)
  133.     {
  134.         *matrixPointer[index1] = (int)calloc(columns, sizeof(int));
  135.     }
  136.  
  137.     return matrixPointer;
  138. }
  139.  
  140.  
  141.  
  142. /*----------------------------------------------------------------------------*/
  143.  
  144.  
  145.  
  146. int testRows(int **matrixPointer, int &rowLocation, int rows, int columns)
  147. {
  148.     int counterRows = INIT;
  149.     int unevens = INIT;
  150.     int index1 = INIT;
  151.     int index2 = INIT;
  152.  
  153.     for(index1 = INIT; index1 < rows; index1++)// Loops through rows.
  154.      {
  155.           counterRows = INIT; 
  156.  
  157.           for (index2 = INIT; index2 < columns; index2++) // Loops through columns.
  158.           {
  159.               //Adds values of pointer as a counter of 1s. 
  160.               counterRows += matrixPointer[index1][index2];
  161.           }
  162.           if ((counterRows % 2) != 0)// If counter is not evenly divisible by 2.
  163.           {
  164.               unevens++;  // Number of uneven rows count increases.   
  165.               rowLocation = index2; // Coordinate of changeBit is altered.        
  166.           }        
  167.      }
  168.  
  169.     return unevens;
  170. }
  171.  
  172.  
  173. /*----------------------------------------------------------------------------*/
  174.  
  175.  
  176. int testColumns(int **matrixPointer, int &columnsLocation, int rows, int columns)
  177. {
  178.     int counterRows = INIT;
  179.     int unevens = INIT;
  180.     int index1 = INIT;
  181.     int index2 = INIT;
  182.     int columnLocation = INIT;
  183.  
  184.     for(index1 = INIT; index1 < rows; index1++)// Loops through rows.
  185.      {
  186.           counterRows = INIT; 
  187.  
  188.           for (index2 = INIT; index2 < columns; index2++) // Loops through columns.
  189.           {
  190.               //Adds values of pointer as a counter of 1s. 
  191.               counterRows += matrixPointer[index2][index1];
  192.           }
  193.           if ((counterRows % 2) != 0)// If counter is not evenly divisible by 2.
  194.           {
  195.               unevens++;  // Number of uneven rows count increases.
  196.               columnLocation = index2; // Coordinate of changeBit is altered.           
  197.           }        
  198.      }
  199.  
  200.     return unevens;
  201. }
  202.  
  203.  
  204.  
  205. /*----------------------------------------------------------------------------*/
  206.  
  207.  
  208.  
  209. void outputResults(int rowUnevens, int columnUnevens, int columnLocation, int rowLocation)
  210. {
  211.      // If there are no rows/columns with uneven numbers.
  212.      if((rowUnevens == PARITY) && (columnUnevens == PARITY))
  213.      {
  214.           printf("Matrix has parity property. \n\n");          
  215.      }        
  216.      else
  217.      {
  218.           /* If 1 row and column is uneven then it uses the coordinate for 
  219.              change-bit*/
  220.           if((rowUnevens == CHANGE) && (columnUnevens == CHANGE))
  221.           {
  222.                // Prints bit-change location to user from recorded values.
  223.                printf("Change bit (%d , %d). \n\n", rowLocation, columnLocation);       
  224.           }
  225.           else
  226.           {
  227.                printf("Matrix is corrupt. \n\n");
  228.           }
  229.      }             
  230.  
  231.      return;                 
  232. }
  233.  
  234.  
  235. /*----------------------------------------------------------------------------*/
  236.  
  237.  
  238. void freeMem(int **matrixPointer, int rows, int columns)
  239. {
  240.      for (int index1 = INIT; index1 < rows; index1++)// Loops through rows.
  241.      {
  242.          // Frees memory of each array in the matrix and sets to NULL.
  243.          free(matrixPointer[index1]);
  244.          matrixPointer[index1] = NULL; 
  245.      }
  246.      // Frees memory of the matrix.
  247.      free(matrixPointer);
  248.      matrixPointer = NULL;
  249.  
  250.      return;    
  251. }
  252.  
  253.  
  254. /*----------------------------------------------------------------------------*/
  255.  
  256.  
  257.  
Oct 6 '07 #1
8 1872
it also points to this in <stdio.h>:

"{ return __F->_flag & _IOEOF; }"

I dont understand what this means, im hoping one of you does..
Oct 6 '07 #2
RRick
463 Expert 256MB
The main cause of a seg violation is a NULL or "rogue" pointer. By rogue, I mean a pointer with random or unitialized values. You have a lot of pointers in your code and a lot of code and maybe someone will be lucky and see the problem. (I didn't see anything that was obvious).

This is where a debugger is a great help. Compile your code with the debugger option turned on and let the program run in the debugger and when it crashes, the debugger will show where the offending line of code is. Alternatively, you can put in printfs until you bracket the problem.
Oct 6 '07 #3
The main cause of a seg violation is a NULL or "rogue" pointer. By rogue, I mean a pointer with random or unitialized values. You have a lot of pointers in your code and a lot of code and maybe someone will be lucky and see the problem. (I didn't see anything that was obvious).

This is where a debugger is a great help. Compile your code with the debugger option turned on and let the program run in the debugger and when it crashes, the debugger will show where the offending line of code is. Alternatively, you can put in printfs until you bracket the problem.
I am running a debugger but it int stopping at anything just coming up with an error.. I suppose I ould put printf s everywhere and try it that way but it is very time consuming.
Can you tell me more about why NULL would cause a segmentation violation? we were told to use it.
Oct 6 '07 #4
btw i think my compiler is compiling my code as C++. That may help some?
Oct 6 '07 #5
RRick
463 Expert 256MB
I did notice one thing, your readMatrix is in need of a few revisions. First, the fileName variable is never set to a value. Fopen on a random string is not a good idea.

You pass in a pointer value for fp, but you're not going to get a changed pointer value back. Any use of fp in main, will be with the initialized value of NULL. You need to pass in FILE *& or FILE ** for readMatrix to change the value.

You need to check for a valid file pointer before calling feof because feof expects a valid file pointer. Usually, after fopen, you check for a valid file pointer simply by:
Expand|Select|Wrap|Line Numbers
  1. if ( !fp) printf( "Can't open file .......
Oct 6 '07 #6
the program doesnt even prompt the user for the file name though.. Ill give it a try and c what I can do. Thanks heaps.
Oct 6 '07 #7
Im getting these errors now on compile. It compiles with no problems in C++ but needs to be in C.. I honestly cant see anything wrong in any of these and is everything I have been taught in C.

43 syntax error before '&' token
45 syntax error before '&' token
46 syntax error before '&' token
96 syntax error before '&' token
In function `readMatrix':
99 `fp' undeclared (first use in this function)
(Each undeclared identifier is reported only once
for each function it appears in.)
103 `end' undeclared (first use in this function)
107 `rows' undeclared (first use in this function)
108 `columns' undeclared (first use in this function)
111 `matrixPointer' undeclared (first use in this function)
113 'for' loop initial declaration used outside C99 mode
115 'for' loop initial declaration used outside C99 mode
In function `setMem':
142 c 'for' loop initial declaration used outside C99 mode
At top level:
156 syntax error before '&' token
In function `testRows':
163 `rows' undeclared (first use in this function)
167 `columns' undeclared (first use in this function)
170 `matrixPointer' undeclared (first use in this function)
175 `rowLocation' undeclared (first use in this function)
At top level:
186 syntax error before '&' token
In function `testColumns':
194 `rows' undeclared (first use in this function)
198 `columns' undeclared (first use in this function)
201 `matrixPointer' undeclared (first use in this function)
In function `freeMem':
250 'for' loop initial declaration used outside C99 mode


I really cant work out any of them.. Im only just getting these errors now.. :'-(. very frustrating.

heres my code:

Expand|Select|Wrap|Line Numbers
  1. /* Program Function: Reads in data on a boolean matrix (/s) and outputs
  2.  *         whether the file has parity, is corrupt or the coordinates of the bit
  3.  *         we can change to give it parity.
  4.  *
  5.  -----------------------------------------------------------------------------*/
  6.  
  7.  
  8.  
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11. #include <malloc.h>
  12.  
  13.  
  14.  
  15. /*----------------------------------------------------------------------------*/
  16.  
  17. // Sets values in place of booleans.
  18. #define TRUE 1
  19. #define FALSE 0
  20.  
  21. // Numbers of uneven rows / columns in a matrix for the properties.
  22. #define PARITY 1
  23. #define CHANGE 2
  24. #define CORRUPT 3
  25. #define INIT 0
  26. #define FILENAMEL 100
  27.  
  28.  
  29.  
  30. /*----------------------------------------------------------------------------*/
  31.  
  32.  
  33. FILE *readMatrix(FILE *fp, int **matrixPointer, int &rows, int &columns, int &end);
  34. int **setMem(int **matrixPointer, int rows, int columns);
  35. int testRows(int **matrixPointer, int &rowLocation, int rows, int columns);
  36. int testColumns(int **matrixPointer, int &columnsLocation, int rows, int columns);
  37. void outputResults(int rowUnevens, int columnUnevens, int columnLocation, int rowLocation);
  38. void freeMem(int **matrixPointer, int rows, int columns);
  39.  
  40.  
  41. /*----------------------------------------------------------------------------*/
  42.  
  43.  
  44. int main(int argc, char **argv)
  45. {
  46.     int matrixNumber = INIT;
  47.     int rows = INIT;
  48.     int columns = INIT;
  49.     int rowLocation = INIT;
  50.     int columnLocation = INIT;
  51.  
  52.     int end = FALSE;
  53.  
  54.     FILE *fp = NULL;
  55.  
  56.     int **matrixPointer = NULL;
  57.  
  58.     do
  59.     {
  60.            matrixNumber++;
  61.  
  62.            readMatrix(fp, matrixPointer, rows, columns, end);
  63.  
  64.            if (end != TRUE)
  65.            {
  66.                 int rowUnevens = testRows(matrixPointer, rowLocation, rows, columns);
  67.                 int columnUnevens = testColumns(matrixPointer, columnLocation, rows, columns);
  68.  
  69.                 printf("%d) \n", matrixNumber);
  70.                 outputResults(rowUnevens, columnUnevens, columnLocation, rowLocation);
  71.  
  72.            }           
  73.            freeMem(matrixPointer, rows, columns);
  74.  
  75.     }while(!feof(fp));
  76.  
  77.     return 0;   
  78. }
  79.  
  80.  
  81.  
  82. /*----------------------------------------------------------------------------*/
  83.  
  84.  
  85.  
  86. FILE *readMatrix(FILE *fp, int **matrixPointer, int &rows, int &columns, int &end)
  87. {
  88.      char fileName[FILENAMEL]; // Character array for file-name string.   
  89.      fp = fopen(fileName, "r"); // Opens file with given name in 'read-only'.
  90.  
  91.      if(!feof(fp))
  92.      {
  93.             end = FALSE;      
  94.  
  95.             /* Reads numbers from file for values of 'rows' and 'columns' on the first 
  96.                line of input. */
  97.                fscanf(fp, "%d", &rows);
  98.                fscanf(fp, "%d", &columns);
  99.  
  100.                 // Allocates the memory for the matrixPointer array.
  101.                 matrixPointer = setMem(matrixPointer, rows, columns);
  102.  
  103.                 for(int index1 = INIT; index1 < rows; index1++)// Loops through rows.
  104.                 {
  105.                      for (int index2 = INIT; index2 < columns; index2++) // Loops through columns.
  106.                      {
  107.                          /* Inputs value at that point of file and stores in appropriate
  108.                             point in the matrix array according to current index. */
  109.                         fscanf(fp, "%d", &matrixPointer[index1][index2]);
  110.                       }
  111.                 }
  112.      }
  113.      else
  114.      {
  115.          end = TRUE;
  116.      }
  117.  
  118.  return fp;   
  119. }
  120.  
  121.  
  122. /*----------------------------------------------------------------------------*/
  123.  
  124.  
  125.  
  126. int **setMem(int **matrixPointer, int rows, int columns)
  127. {
  128.     // Allocate memory for each row.
  129.     *matrixPointer = (int *)calloc(rows, sizeof(int *));
  130.  
  131.     // Allocate memory for each columns within each row. 
  132.     for (int index1 = INIT; index1 < rows; index1++)
  133.     {
  134.         *matrixPointer[index1] = (int)calloc(columns, sizeof(int));
  135.     }
  136.  
  137.     return matrixPointer;
  138. }
  139.  
  140.  
  141.  
  142. /*----------------------------------------------------------------------------*/
  143.  
  144.  
  145.  
  146. int testRows(int **matrixPointer, int &rowLocation, int rows, int columns)
  147. {
  148.     int counterRows = INIT;
  149.     int unevens = INIT;
  150.     int index1 = INIT;
  151.     int index2 = INIT;
  152.  
  153.     for(index1 = INIT; index1 < rows; index1++)// Loops through rows.
  154.      {
  155.           counterRows = INIT; 
  156.  
  157.           for (index2 = INIT; index2 < columns; index2++) // Loops through columns.
  158.           {
  159.               //Adds values of pointer as a counter of 1s. 
  160.               counterRows += matrixPointer[index1][index2];
  161.           }
  162.           if ((counterRows % 2) != 0)// If counter is not evenly divisible by 2.
  163.           {
  164.               unevens++;  // Number of uneven rows count increases.   
  165.               rowLocation = index2; // Coordinate of changeBit is altered.        
  166.           }        
  167.      }
  168.  
  169.     return unevens;
  170. }
  171.  
  172.  
  173. /*----------------------------------------------------------------------------*/
  174.  
  175.  
  176. int testColumns(int **matrixPointer, int &columnsLocation, int rows, int columns)
  177. {
  178.     int counterRows = INIT;
  179.     int unevens = INIT;
  180.     int index1 = INIT;
  181.     int index2 = INIT;
  182.     int columnLocation = INIT;
  183.  
  184.     for(index1 = INIT; index1 < rows; index1++)// Loops through rows.
  185.      {
  186.           counterRows = INIT; 
  187.  
  188.           for (index2 = INIT; index2 < columns; index2++) // Loops through columns.
  189.           {
  190.               //Adds values of pointer as a counter of 1s. 
  191.               counterRows += matrixPointer[index2][index1];
  192.           }
  193.           if ((counterRows % 2) != 0)// If counter is not evenly divisible by 2.
  194.           {
  195.               unevens++;  // Number of uneven rows count increases.
  196.               columnLocation = index2; // Coordinate of changeBit is altered.           
  197.           }        
  198.      }
  199.  
  200.     return unevens;
  201. }
  202.  
  203.  
  204.  
  205. /*----------------------------------------------------------------------------*/
  206.  
  207.  
  208.  
  209. void outputResults(int rowUnevens, int columnUnevens, int columnLocation, int rowLocation)
  210. {
  211.      // If there are no rows/columns with uneven numbers.
  212.      if((rowUnevens == PARITY) && (columnUnevens == PARITY))
  213.      {
  214.           printf("Matrix has parity property. \n\n");          
  215.      }        
  216.      else
  217.      {
  218.           /* If 1 row and column is uneven then it uses the coordinate for 
  219.              change-bit*/
  220.           if((rowUnevens == CHANGE) && (columnUnevens == CHANGE))
  221.           {
  222.                // Prints bit-change location to user from recorded values.
  223.                printf("Change bit (%d , %d). \n\n", rowLocation, columnLocation);       
  224.           }
  225.           else
  226.           {
  227.                printf("Matrix is corrupt. \n\n");
  228.           }
  229.      }             
  230.  
  231.      return;                 
  232. }
  233.  
  234.  
  235. /*----------------------------------------------------------------------------*/
  236.  
  237.  
  238. void freeMem(int **matrixPointer, int rows, int columns)
  239. {
  240.      for (int index1 = INIT; index1 < rows; index1++)// Loops through rows.
  241.      {
  242.          // Frees memory of each array in the matrix and sets to NULL.
  243.          free(matrixPointer[index1]);
  244.          matrixPointer[index1] = NULL; 
  245.      }
  246.      // Frees memory of the matrix.
  247.      free(matrixPointer);
  248.      matrixPointer = NULL;
  249.  
  250.      return;    
  251. }
  252.  
  253.  
  254. /*----------------------------------------------------------------------------*/
  255.  
  256.  
  257.  
Oct 6 '07 #8
dw, i have managed to fix all of these errors. Thankyou to all of you who assisted me with this.
Oct 7 '07 #9

Sign in to post your reply or Sign up for a free account.

Similar topics

2
by: John Smith | last post by:
A friend's small business has gotten themselves in trouble. Their only programmer has recently skipped the country and did not leave the source code or any design notes for a couple of program...
2
by: JDevine | last post by:
Hey. I posted a info about a program I have written that uses google to get and download files by type and site. I need HELP!!! This program is finished except for 2 features which, having tried...
4
by: Morgan Leppink | last post by:
Hey all - We are running SQL 2000 with ALL available service packs, etc. applied. We just built a brand new database server, which has dual 2Ghz XEONs, 2GB memory, and the following disk...
2
by: Trevor Hughes | last post by:
Hello All Our organisation has recently upgraded its operating system to Windows 2000. Prior to this I was running Access 2000 databases on NT machines using the Access 2000 Runtime with no...
8
by: frank | last post by:
Below is some code for doing and insert into one of my tables. The inserts do not work because a duplicate key exists, which I want to happen. The problem is, I cannot get access to return an error...
3
by: Sampson | last post by:
I have a question about enumeration and how to populate them during runtime. I am using vb.net but will happily take any advice in c# as well. Here is an example to help illustrate what I am...
1
by: NutsAboutVB | last post by:
Hello, I am a VB.NET programmer and I have a JPEG image file (from digital camera) of about 109 KB's in size, when I open it and save it (without making any alterations at all, just going to...
4
by: kaosyeti | last post by:
hey... i know NOTHING about sql server, .net framework or probably anything else on sql monster. i am a novice access user, self-taught for about 9 months now and have only a basic understanding...
8
by: g_man | last post by:
I am trying trap Runtime error 3022 (duplicates) in the click event of a command button that closes the form. I have code in the Form_Error event that does a good job of providing a more meaningful...
8
by: SMcK | last post by:
I posted on this subject back a couple weeks ago and learned enough to know how much I don't know. I'm thinking I need to simplify and ask fewer questions. I've been creating Access databases...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
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,...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...

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.