Main Content

MISRA C++:2008 Rule 5-0-17

Subtraction between pointers shall only be applied to pointers that address elements of the same array

Description

Rule Definition

Subtraction between pointers shall only be applied to pointers that address elements of the same array.

Rationale

When you subtract between two pointers to elements in the same array, the result is the distance between the two array elements. If the pointers are null or point to different arrays, a subtraction operation is undefined. If you use the subtraction result as a buffer index, it can cause a buffer overflow.

Before you subtract between pointers to array elements, make sure that they are non-null and that they point to the same array.

Polyspace Implementation

Polyspace® flags subtraction between pointers to elements of different arrays.

Troubleshooting

If you expect a rule violation but Polyspace does not report it, see Diagnose Why Coding Standard Violations Do Not Appear as Expected.

Examples

expand all

void foo(){
	int a[10];
	int b[10];
	int distance = a-b;//Noncompliant
	
}

In this example, Polyspace flags the subtraction between a and b, which are elements of different arrays.

Check Information

Group: Expressions
Category: Required

Version History

Introduced in R2013b

expand all